#include main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1#includemain(){unsigned int a=65535;printf("a=%d\n",a);}运算结果a=-1为什么是等于-1呢?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/17 01:10:19
![#include main() {unsigned int a=65535; printf(](/uploads/image/z/3990265-25-5.jpg?t=%23include+main%28%29+%7Bunsigned+int+a%3D65535%3B+printf%28%22a%3D%25d%5Cn%22%2Ca%29%3B+%7D+%E8%BF%90%E7%AE%97%E7%BB%93%E6%9E%9C+a%3D-1%23includemain%28%29%7Bunsigned+int+a%3D65535%3Bprintf%28%22a%3D%25d%5Cn%22%2Ca%29%3B%7D%E8%BF%90%E7%AE%97%E7%BB%93%E6%9E%9Ca%3D-1%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E7%AD%89%E4%BA%8E-1%E5%91%A2%3F)
#include main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1#includemain(){unsigned int a=65535;printf("a=%d\n",a);}运算结果a=-1为什么是等于-1呢?
#include main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1
#include
main()
{unsigned int a=65535;
printf("a=%d\n",a);
}
运算结果
a=-1
为什么是等于-1呢?
#include main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1#includemain(){unsigned int a=65535;printf("a=%d\n",a);}运算结果a=-1为什么是等于-1呢?
隐式转换.
这段程序假设unsigned int占2个字节,16位.
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位.
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,.