C++数据短整型用长整型总是输出-13108
发布网友
发布时间:2024-05-03 20:29
我来回答
共4个回答
热心网友
时间:2024-07-20 18:33
举例子吧
char a = 0x1FF;
int b = a;
因为给a赋值时溢出了,此时a = 0xFF,因为a是有符号的char,根据补码,a的值是-1
所以当b = a时,是将-1赋值给b了
如果a是unsigned int。此时b就等于255啦。
如果a没有溢出的部分,根据补码判断为正时,b的值就跟a的值一样了
比如
char a = 0x10F;
int b = a;追问在程序里加入赋值的语句会出现你说的这种情况,每次输出的数也不同,但如果用cin来从键盘输入一个比32767大的数他就会一直输出-13108,请问这是怎么回事。。。
追答这个就不好说了,估计是cin操作内部处理的结果吧。对这个我没有太多研究。
但是不管怎样,记住一点就可以了,时刻注意溢出的情况。每种编译器或者系统在对待溢出的情况的处理可能是不同的,这种异常结果作为程序员是不容易了解的,但是我们能做的就是避免溢出的出现
热心网友
时间:2024-07-20 18:34
因为在存储的时候就是短整型存储的,所以多余的没有存下,在内存中更改过。导致就算用长整形输出也是不对的数。
热心网友
时间:2024-07-20 18:34
检查下输出类型
热心网友
时间:2024-07-20 18:35
超出int的最大表示数范围了 系统随机给了一个数
C++数据短整型用长整型总是输出-13108
int b = a;因为给a赋值时溢出了,此时a = 0xFF,因为a是有符号的char,根据补码,a的值是-1 所以当b = a时,是将-1赋值给b了 如果a是unsigned int。此时b就等于255啦。如果a没有溢出的部分,根据补码判断为正时,b的值就跟a的值一样了 比如 char a = 0x10F;int b = a;...
c++中,如果int a;cin>>a;cout<
(1)当一个未初始化赋值的时候(VC下如此,其他不保证)默认是0xCCCCCCCC;,他在内存就默认保存为-858993460即二进制的11001100 11001100 1100110011001100;十六进制的CCCCCCCC;而汉字"烫"的编码恰好就是1100110011001100:(2)如果变量的数据类型由于你的运算的溢出了,在内存中系统就自动改为-858993460 ...