00问答网
所有问题
c语言提问main() {int i=-1; unsigned u=65536; printf ("%d,%u",i,i); printf("%d,%u",u,u);}要答案原因
要详细原因~~
举报该问题
其他回答
第1个回答 2011-09-19
对于有符号整形数,首位代表符号位,如果你明白这句话就知道为什么了
第2个回答 2011-09-19
输出的方式不同,结果肯定不同了
<上一页
1
2
相似回答
这道题怎么做啊?
答:
当数据是
65536
时,造成溢出,它会从0开始计数。
C语言
问题
答:
由于b位数多于a,
c语言
编译器会自动截断丢弃高位,这样赋值后a中存储的就是16个1.又因为你的printf中的%u,这表示要用无符号规则来读取第一个参数即a的值,这样16个1的二进制换算成十进制就是65535(不信你用等比数列求和公式算一下,
关于
c语言
的
一
个问题。请看下面的语句。
答:
下边是解释。。。因为
unsigned
int
a=65535在电脑中存储二进制形式 1111 1111 1111 1111、由于在计算机中,整数是以补码形式存放的、根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。而%d是以有符号的整型输出、而1111 1111 1111 1111的补码不就是1000 0000 0000 ...
C语言
简单程序不懂,请各位老大解释一下!
答:
所以最后输出结果为:-1→65535
printf(
"%d→%u\n",b,a);因为b=a,而a=65534u,当我们用二进制表示时可以发现最高位为1,说明此数为负数,表示为:1111 1111 1111 1110此时为补码,反码=补码-
1,
为:1111 1111 1111 1101,再把反码变成原码(符号位不变)为:1000 0000 0000 0010,这个二进制数...
大家正在搜
相关问题
C语言的%ld、%d、%U是啥意思啊?
c语言中 unsigned int i=3;printf("...
C语言中%u\n是什么意思
C语言 %c %d %s %ld %u 都怎么用法
c语言 void main () { unsigned sh...
为什么C语言中的 unsigned long log int...
一道c语言练习题short i=-4;printf("%d%...
C语言中:unsigned int a=-2;printf(...