#include"stdio.h"
main()
{
unsigned a;
int b=-1;
a=b;
printf("%d->%u\n",b,a);
a=65534u;
b=a;
printf("%d->%u\n",b,a);
}
例如上面的这段代码,我在WIN32平台,集成开发环境是VC++6.0的输出的结果的
-1->4294967295
65534->65534
就是不知道上面的4294967295是怎么来的
我的猜想是这个无符号a在内存中的存储空间是4个个字节然后得到了这个值,但是具体的过程却不知道怎么推出的,或许这个猜想也是错的
有没有知道的麻烦帮忙解答下然后把答案发到我QQ邮箱里面
394021672@qq.com
先谢谢1楼和2楼的回答额!
二楼的朋友那我多问个问题额?那为什么返回的结果会变成4294967295,呵呵!刚开始我自己读完这个程序觉得输出的a是1呵呵!这是不是与一楼说的二进制的补码与原码有关呀,我刚找到资料还没看呵呵,那我先看完吧。希望你也能给我指教下哈,先谢过一下额!
在C语言中长度相同的有符号与无符号整型数间,原样赋值时为什么值...
在c语言中无符号(unsigned)和有符号(signed),数据范围不同,无符号和有符号的区别就是有符号类型需要使用一个bit来表示数字的正负,从而导致负数或者超过signed int数据范围时,在两者中的表示值不同,示例代码如下,include <stdio.h> int main(int argc, char *argv[]){ unsigned a;int b=-...
c语言中无符号和有符号的整形变量在 表示字符数据是为什么取值范围不一...
那是由于计算机的储存模式造成的。在计算机中,数字的储存形式是二进制。整形数是一个八位二进制数。如:xxxxxxxx 最大是:11111111 八个一 如果是无符号数,那么第一位就应该不是符号位,所以8个1的值是:255 如果是有符号,那么第一位将是符号位。0表示正,1表示负,如:01111111 表示数字大小的...
有符号与无符号数之间的区别 C语言
这说明,其实数据的表示在底层的位级表示是相同的,表示的值的不同是所定义的类型不同,也就是说我们想要解释这个位级串的方式不同导致了值的不同。如此题:-1和4294967295位级表示均为:0xFFFFFFFF,但使用unsigned解读为4294967295,使用int型解读为-1。这就是其区别。
C语言-带符号整数和无符号整数问题
回答:数字是有正负之分的,而正数前面的正号是可以省略的,无符号数实际上就是大于等于零的数,在C语言中,如果定义一个变量为无符号型,那么这个变量只能表示大于等于零的数,而有符号数就是包含负数,如果定义一个变量为有符号型,那么这个变量可以赋值为负数也可以赋值为正数。比如,无符号的int型,表示的范...
在C语言中有符号整数和无符号整数有什么差别?
它们所占的字节数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号是什么,因此它说能表示的绝对值就要比无符号的少一半。举个例子,我们有一个1个字节的整数(虽然这种类型不存在),那么无符号的就是这样:00000000-11111111 这个就是无符号的范围。一个字节是8位。下面有符号的,...
C语言为什么当无符号长整型和整型一起输入时会导致整型没有赋上值
回答:写成scanf("%u%d",&num1,&num2);就可以了,不需要l,scanf把l当成是两个数中间存在的一个字符了,类似于逗号,所以无法赋值给num2;你可以尝试输入4294967295l1111,也能读取到数值。
c语言中有符号和无符号整型数据处理区别
c语言中对于有符号和无符号整型数据处理区别,就在于对数据最高位的解释.对于一个有符号整数,C编译程序将把该值(二进制代码)的最高位作为符号标志位(符号标志位是0,表示正数;为1,表示负数)而对于一个无符号整数,该数的最高位将被作为数值处理.设int型数据占2个字节,则-1在内存中应以16位全1来...
C语言中有符号的与无符号的if比较结果不正确?
因为它们的类型不同,在进行比较前,先自动类型转换:b的值-1就按unsigned int 转换为4294967295,然后跟1200比较,它就出现b>a的情况了。你不妨unsigned int c=4294967295;然后,if(b==c)printf("b==c");试试看,是不是这样?
C程序中,有符号整型变量和无符号整型变量的区别在于哪里?
C语言中无符号整型变量和有符号整型变量在同一系统中所占用的数据宽度一样。不同的是:有符号整型变量把数据的最高位作为符号位使用, 因此能表示数的正负, 表示范围: 对于16位的变量为: -32368<=变量<=32367, 对于32位的变量为:-2147483648<=变量<=2147483647;无符号整型变量把数据的最高位仍作为...
C语言中有符号整型和无符号整型的区别
有符号:用最高为来表示符号位 , 1表示负,0表示正 无符号:全部用来表示实际数。两者的取值范围不同 有符号整型为 -32768 到 32767 无符号整型 为 0 到 65535