long i=32768;printf("%d",i)为什么输出是1?

如题所述

因为这个值有回绕性,当表示的值超过自己的范围时就会返回开头重新开始 , 如果是32769 的话 那么输出的就是2 。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-08
不应当啊,你再编译一次试试。
32768 十六进制 0x8000. 声明为 long,没问题。
printf("%d",i); printf("%ld",i); 结果应当一样。
第2个回答  2011-09-08
数据类型错误。。。前面的 long i 是长整型变量 ,,而后面“%d” 是以整型数据输出....
就是这错了 应该改成“%l,i”
第3个回答  2012-11-23
应该是-32768吧
当表示的值超过自己的范围时就会返回开头重新开始 从第一个数-32768开始,如果是32769 的话 那么输出的就是-32767
第4个回答  2011-09-07
printf 用 %ld
大家正在搜