什么是char i = 0x80,为什么在位移中没有发生溢出

什么是char i = 0x80,为什么在位移中没有发生溢出,第1张

概述这是一个程序 #include <stdio.h>main(){ unsigned char i=0x80;printf("i=%d",i<<1);} 它的输出是256. 我不清楚是什么 unsigned char i=0x80; <-- i is not int it is char so what will it store? 我知道位移和十六进制的东西. 我正在存储的值如何变化到25 这是一个程序
#include <stdio.h>main(){ unsigned char i=0x80;printf("i=%d",i<<1);}

它的输出是256.
我不清楚是什么

unsigned char i=0x80; <-- i is not int it is char so what will it store?

我知道位移和十六进制的东西.
我正在存储的值如何变化到256?

UPDATE

当位移 *** 作发生时为什么不发生溢出

解决方法 在C中,char是用于存储字符数据的整数类型,通常为1字节.

存储在i中的值为0x80,等于128的十六进制常数.

对于两种整数类型(例如i <1)的算术运算将促进为更广泛的类型,在这种情况下为int,因为1是int常量.在任何情况下,整数函数参数被提升为int. 然后将结果发送到printf,并使用%d格式说明符,这意味着“打印整数”.

总结

以上是内存溢出为你收集整理的什么是char i = 0x80,为什么在位移中没有发生溢出全部内容,希望文章能够帮你解决什么是char i = 0x80,为什么在位移中没有发生溢出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存