有关C语言的赋值问题
发布网友
发布时间:2024-01-30 21:23
我来回答
共5个回答
热心网友
时间:2024-03-23 02:39
懂的补码吗
unsigned int a=65535;无符号数65535 把内存空间占满了 也就是16个1(二进制)
这时赋予一个有符号数 那么b也存16个1 这时 第一位就有意义了 是符号为 1为负数 0为正数 负数的补码求法是 变成二进制 添加符号位第一位为1
出符号为 安位取反得反码 加1 得补码
也就是说
[1111111111111111]补码->[1111111111111110]反码->[1000000000000001]源码=
-1 减1得反码 按位取反
热心网友
时间:2024-03-23 02:39
因为超过了最大范围,所以在相应的值范围内,反转,不明白加我百度HI
热心网友
时间:2024-03-23 02:40
晕,溢出了嘛。
你的变量a定义的是无符号整形,但是你赋值超出了该类型的范围。
热心网友
时间:2024-03-23 02:40
运行溢出而已
热心网友
时间:2024-03-23 02:41
数据类型不同以致编译出错