无符号整型赋值

不是说 无符号整型只能存储正整数 而不能存储负数吗 怎么我定义了一个无符号整型 然后赋值其-200 再输入 程序执行成功 并没有任何错误提示或警告呢

在C和C++当中,基本类型很多都是可以自动相互转换的
比如可以吧short赋值给int变量也可以赋值给long变量
当然无符号整形和有符号整形内有转换机制,可以实现转换,具体的转换根据编译器实现的不同会有所不同
比如有的编译器根据有符号整形的标准表达方式
把-1表示为11111111的二进制字节序(也就是平时所说的取反加一)---但是在正整数当中11111111=255
所以-200转换成正整数也是类似
转换机制分成类型提升转换和类型转换,提升转换是自动进行的
所以你把无符号整形赋值给正整数的时候,编译器会执行C++内部的转换机制,把他变成合理的值
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-19
数据在内存中的 是二进制 ,,它 表示 的 值是多少 ,需要 我们指定 它是什么样的类型。

如 INT ,SHORT FLOAT UNSIGNED INT ,==。
举一个简单的例子:
拿 8位举例:
1000 0111 这是一个八位二进制 数,它代表多少呢?
首先需要 知道 整型数值 在内存中 是以补码的形式存在。

如果 把它 看成 无符号的 它代表的是:128+4+2+1=135
如果把它看成 有符号的 它代表的: -128+4+2+1 =-121
也就是 他代表多少 是根据其类型 定的。

正如你的代码 ,,你定义了一个 UNSIGNED INT a; 这是什么意思 呢? 只是向内存申请了四个字节的存储空间,然后 你写一个 -200进去,是把 -200的补码 写在了这个 四字节的 存储空间上,现在 看到的这个 -200 就像 上面的 -121,我们还可以把它理解成 其它的数,就像你定义它为 无符号整数,那你输出它 得到的 就不是 -200了,应该像 上面的 +135了。 当然这个值 我就不再求了。
第2个回答  2012-08-19
肯定,没有错误了,如果你定义无符号整形,那个最高位不再是符号为了,就没有正负了,
如果你输入-20,他会把你的最高符号位1,看成是一个数值,被再试符号为了。
第3个回答  2012-08-19
可以存储

但是不用能用赋值符号= 来存

c语言 编译器 不会什么错都报

无符号整型赋值
把-1表示为11111111的二进制字节序(也就是平时所说的取反加一)---但是在正整数当中11111111=255 所以-200转换成正整数也是类似 转换机制分成类型提升转换和类型转换,提升转换是自动进行的 所以你把无符号整形赋值给正整数的时候,编译器会执行C++内部的转换机制,把他变成合理的值 ...

谁能举例说名下将整型数据赋值给无符号整型变量的结果?
赋值方式:如果语句为 A = B;则:1,如果B的字节数大于或者等于A,则直接按字节拷贝到A里,跟是否为符号数没有任何关系;2,如果B的字节数小于A,则有如下两种情况:第一种情况:如果B为无符号数,则直接按字节拷贝到A里;第二种情况:如果B为有符号数,首先按字节拷贝到A里,其次,如果B的最...

unsigned int最大可以赋值为多少?
unsigned int是无符号整型,最高位也是数据位,数据占满32位。答二:int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。答三:无符号情况下表示为0~4294967295。

C语言为什么当无符号长整型和整型一起输入时会导致整型没有赋上值
回答:写成scanf("%u%d",&num1,&num2);就可以了,不需要l,scanf把l当成是两个数中间存在的一个字符了,类似于逗号,所以无法赋值给num2;你可以尝试输入4294967295l1111,也能读取到数值。

关于C语言的无符号整型?
有符号的最高位是符号位,1表示负数,0表示正数 无符号所有数位都是表示数值的 当输入-1的时候,相当于赋值c=-1,根据补码规则,-1的十六进制在int类型下是0xffffffff,按照%d输出-1,按照%u输出无符号就是2的32次幂-1,也就是你输出的那个值 而如果定义unsigned char,实际上用%u或者用%d输入是...

C语言无符号整型unsigned int赋值20万就异常,求助!到底int最多能赋值...
20万 就是200000*4=800000 需要800K左右的内存。 明显栈溢出了 修改方法也很简单 要么 用new动态分配 要么 定义成全局变量 比如 const unsigned int arrSize = 200000;const unsigned int nStart = 10000;const unsigned int nEnd = 99900;int a[arrSize];int main(){cout << sizeof(unsigned ...

对于无符号的变量赋值问题
你的输出格式为%d,即按十进制有符号整数的形式输出。如果你要输出的是十进制无符号整数,输出格式应该为%u

在C语言中,可以给一个无符号整型变量赋值一个负数吗
可以,但是结果会出错,负数在计算机中最高位为1,作为符号标志(正数为0),但是如果赋给无符号整型变量,最高位的标志位就会变成数值位,计算时把这个1当成数值。

eda技术中赋值后如何判断无符整数和有符整数
在EDA(Electronic Design Automation)技术中,我们一般使用编程语言来描述和设计电子电路。在大多数编程语言中,包括EDA中常用的硬件描述语言(HDL)如VHDL和Verilog,无符号整数和有符号整数的赋值和判断方式是不同的。对于无符号整数,赋值后的值的最高位表示其大小,不表示符号。无符号整数的取值范围是从...

TC中无符号整型可以赋值为负吗?
可以的,但一般会给出警告,而且这么做是很危险的,甚至代码不可移植。

相似回答