我的代码:
#include <stdio.h>
#include <limits.h>
int main()
{
char c = CHAR_MAX;
c += 1;
printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c);
}
输出:
CHAR_MIN=-128 CHAR_MAX=127 c=-128 ()
我们看到,当我们将char
变量设置为递增时CHAR_MAX
,它会绕到CHAR_MIN
。这种行为得到保证吗?还是将是未定义的行为或实现特定的行为?C99标准对此有何说法?
[注意:当给char或C 大于CHAR_MAX(127)的值时会发生什么?为什么char c = 129会转换为-127?之所以没有解决这个问题,是因为他们谈论分配超出范围的值,而不是将值递增到超出范围的值。]