关于short i = 65535和short i = 65536输出问题
2017-07-21 15:47
2847 查看
#include <stdio.h> int main() { short i = 65535; printf("i=%d\n", i); return 0; }
结果:-1
分析:因为内存中65535存储内容的16进制表示为:0x0FFFF,将此值传递给16位的变量i时,i只能接受到0xFFFF;看见首位为1,编译器会认为i是个负值,至于负值的绝对值=源码取反(0x0000)+1 = 0x0001。因此最终输出-1。
#include <stdio.h>
int main()
{
short i = 65536;
printf("i=%d\n", i);
return 0;
}结果:0
分析:因为内存中65536存储内容的16进制表示为:0x010000,将此值传递给16的i的时候,i接受到0x0000,编译器认为i=0;
相关文章推荐
- 关于php布尔值的输出问题
- 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题
- 关于用奇酷360手机调试apk时不能在logcat输出的问题
- 关于Hibernate能够输出建表语句,但是数据库中不存在表的问题
- 关于用奇酷360手机调试apk时不能在logcat输出的问题
- 关于c#实现计算机音频接口输出固定频率波形的一些问题
- 关于『65535问题』的一点研究与思考
- 关于MacBook外接HDMI显示_声音输出问题
- 关于输出较长 行数较多的结果不能全部显示 屏幕缓存区问题
- 关于CTime::Format在Unicode下的输出问题及解决办法
- 关于递归输出问题
- 关于C++的***5的输出问题
- 关于websphere v6的采用log4j输出日志信息的问题
- PHP5.4及PHP5.5关于htmlspecialchars输出为空的问题
- 关于sqlhelper调用存储过程获取参数返回值和输出参数的问题
- Visual Basic 学习中关于"Print"关键字不能输出的问题
- 关于VS2005下中文输出的问题
- 关于Log4j启动后,强制删除日志文件后|日志不再输出的问题
- 关于C++数据类型转换和格式化输出的问题
- 关于Python输出乱码问题