|
发表于 2013-7-31 10:51:21
|
显示全部楼层
你程序我在电脑上运行结果是这样。。。
- #include <stdio.h>
- int main()
- {
- int a = -7;
- while( a-- )
- {
- if(a == 32767)
- printf("%d\n", a);
- }
- printf("%d", a);
- return 0;
- }
复制代码
所以, 我觉得, 当小到下限时, 会变成上限的最大值。。。。
个人见解, 看下面:
- #include <stdio.h>
- #include <limits.h>
- int main(int argc, char *argv[])
- {
- short value;
- printf("sizeof(short) = %d\n", sizeof(short));
- printf("SHRT_MIN = %d\n", SHRT_MIN);
- //-32768
- //32768 -->二进制为: 1000 0000 0000 0000
- //-32768 -->二进制为:1111 1111 1111 1111 + 1 = 1000 0000 0000 0000
- // 1 -->二进制为: 0000 0000 0000 0001
- //-1 -->二进制为: 1111 1111 1111 1110 + 1 = 1111 1111 1111 1111
- //-32768 + (-1)
- // 1000 0000 0000 0000
- //+ 1111 1111 1111 1111
- //= 0111 1111 1111 1111 -->进进制为:32767
- printf("SHRT_MIN - 1 = %d\n", SHRT_MIN-1);
- value = SHRT_MIN-1;
- printf("short value = %d\n", value);
- return 0;
- }
复制代码 如果为:
你那程序, while(a--);所以, a到达最小时, 变成最大, 从最大一直减小到a = 0, 之后退出while, 而a--, 是后减, 所以最后a = -1, 个人见解, 不知有没有错。。。。。。
|
|