C语言数据转换的问题,高手解答,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:35:26
定义一个无符号整型数据p(%u型),赋值40000,用整型输出(%d)型输出,为什么结果是-1??
同理,定义长整型N=50000,用整型输出为什么是0??

不要长篇大论,就解释这两个问题就行了
说了就解释这两个问题,你们说的那个我知道。。。

1. 你应该在 TURBO C 下运行的程序,因为在 TURBO C(标准C)里面规定:int, unsigned int 都是2个字节的长度,long是4个字节的长度。
2. 标准C下,int的第一位为符号位,所能表示范围为 -32768 ~ 32767, unsigned不存在符号位,表示范围为:0~65535
3. 一旦超出边界就会为不确定的值,而且负数在计算机里是用补码实现的。给你个最常举的例子:
int a = -1;
printf("%d %u", a, a);
输出结果为:-1 65535
int下 -1 表示为 1111 1111 1111 1111 (此即为 -1 的补码)
当作为unsigned时,即为所能表示的最大值(因为unsigned把第1位也看成数值位)。

不会的,把程序抄上来,一定是哪里写错了.