问一道C语言题~~~!设int类型变量只占内存两个字节,int a=-1;printf("%d,%o,%x,%u\n",a,a,a,a);求解释啊.~~
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 21:50:27
问一道C语言题~~~!设int类型变量只占内存两个字节,int a=-1;printf("%d,%o,%x,%u\n",a,a,a,a);求解释啊.~~
问一道C语言题~~~!
设int类型变量只占内存两个字节,
int a=-1;
printf("%d,%o,%x,%u\n",a,a,a,a);
求解释啊.~~
问一道C语言题~~~!设int类型变量只占内存两个字节,int a=-1;printf("%d,%o,%x,%u\n",a,a,a,a);求解释啊.~~
设int类型变量只占内存两个字节,int a=-1;
那么
a这个变量在计算机的存储为:
1111 1111 1111 1111
两个字节,16个1
printf("%d,%o,%x,%u\n",a,a,a,a);
分别是按10进制带符号,8进制无符号,16进制无符号,10进进制无符号的方式输出a
%d----10进制带符号,没问题就是原样输出 -1
%o----8进制无符号,3位2进制位对应一位8进制,最高位也不是符号位
转化下: 1 111 111 111 111 111 (16位1)
8进制 1 7 7 7 7 7
所以输出 177777
%x----16进制无符号,4位2进制对应1位16进制
转化: 1111 1111 1111 1111
16进制 F F F F
所以输出 FFFF
%u----10进制无符号数,最高位的1不是符号了
1111111111111111
直接转成10进制:65535=2^16-1
所以,输出:
-1,177777,FFFF,65535