您的位置 首页 百科问答

C语言来自unsigned int

问题补充说明:#includevoid main(){unsigned int a = -100;printf("%d\n",a);//printf("%x",a);}我书看unsigned int 符号整型数我用printf()打印数-100解释

C语言来自unsigned int

那是因为你在定义a的时候就错了,无符整形数就是不带符号的孙卖橘意思,而你定义了一个符号,这样编译器就不会把-100赋给a,而是让a发生一个类型转换,a是无符号的-100是有符号的整形数,因此发生一个类型转化,-100被转化为了无符整数(但是它绝对不是变成了10360问答0)然后复制给a,这是为啥呢?继续往下看

你printf中是用的是%d,这个转换说明符的意思是把数据以有符号十进制的形式打印出来,

signedint(编译器允许简写为int)是有符整形数,他的字节不配旅能少于2个,现在的操作系统基本上把它旧周组它注扬鲜更诗则团设置为4个字节,对于4个字节的int它的取值范围是-2147铁483647到2147483647,

对于unsignedint,他依然是4个字节,但是他的取值范围是0到4向武停市294967295,

对于signedint他是将unsignedint的0到2147483647表示为0到2147483647,把2147483648到4294967295表示为-2147483647到-1

所以呢我刚才说的第一段中的-100并不是变成了100的愿意,他变成了-100对应的那个无符整数,存在a中实,然后你用%d把a输出映听站极文得些色,由于%d,它又从这个无符的整数转变为-100输出围望将最球了出来

对于输出unsign受集空带edint应该用%u输出,如果还有疑问可以继续问我,

上一篇 vivo x6d参数是什么?
下一篇 t是什么单位
扫一扫,手机访问

扫一扫,手机浏览