#include main() {unsigned int a=65535; printf("a=%d\n",a); }
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/05 18:57:17
#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
为什么是等于-1呢?
隐式转换.
这段程序假设unsigned int占2个字节,16位.
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位.
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,.
这段程序假设unsigned int占2个字节,16位.
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位.
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,.
#include main() {unsigned int a=65535; printf("a=%d\n",a); }
#include main() { unsigned char a=8,c; c=a>>3; printf("%d\n"
main( ) {unsigned int a=3,b=10; printf("%d/n",a1); }
#include"stdio.h"main(){int a=-1 printf("%d,%u,%o,%x\n",a,a,
#include void main() { int a=21,b=11; printf("%d\n",--a+b,--
#include sbit a=P1^0; sbit b=P3^2; unsigned int n; void main
#include main() {int a=2,b=2,c=2; printf("%d\n",a/b&c); } 答案
# include main() { int a=-2,b=0; while(a++&&++b); printf("%d
main() { unsigned char a,b; a=4|3; b=4&3; printf("%d %d\n",a
#include main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n
#include sbit p1_1=P1^0; unsigned int a ; void main() {while
#include main() { int a,b; a=3,b=(++a)+(++a)+(++a); printf("