问一个C语言小问题

2024-11-20 03:32:59
推荐回答(4个)
回答1:

b是short int类型,只有16位,最高孝丛为符号位。
a加上哗慧1后结果是32768,补码表示是00000000 00000000 10000000 00000000
传送到b后
b表示巧芦樱为10000000 00000000,刚好等于-32768在计算机内部的补码表示,所以就是它了。

回答2:

-32768是 10000000 00000000

a是long,所以a+1 按照 long 来计算。
a: 00000000 00000000 01111111 11111111
1:00000000 00000000 00000000 00000001
a+1: 00000000 00000000 10000000 00000000
b : 10000000 00000000
16位无符号数范围衫氏:0--65535 00000000 00000000 -- 11111111 11111111
16位有符号数范没罩围:-32768 ~ +32767 10000000 00000000 -- 01111111 11111111
规则可参考“计算机原理”之类的书或察散。

回答3:

b是有符拿拦号的,他的范围是-32768~32767。a+1的只是32768,b无法消灶胡表示,截取a的后两个字节,即10000000 00000000,它就是-32768,辩空所以传送到b的是1000000 00000000,而不是11111111 11111111

回答4:

心安理得