什么是char i = 0x80,为什么在位移中没有发生溢出
发布时间:2020-12-16 03:08:43 所属栏目:百科 来源:网络整理
导读:这是一个程序 #include stdio.hmain(){ unsigned char i=0x80;printf("i=%d",i1);} 它的输出是256. 我不清楚是什么 unsigned char i=0x80; -- i is not int it is char so what will it store? 我知道位移和十六进制的东西. 我正在存储的值如何变化到256? U
这是一个程序
#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? 我知道位移和十六进制的东西. UPDATE 当位移操作发生时为什么不发生溢出? 解决方法
在C中,char是用于存储字符数据的整数类型,通常为1字节.
存储在i中的值为0x80,等于128的十六进制常数. 对于两种整数类型(例如i <1)的算术运算将促进为更广泛的类型,在这种情况下为int,因为1是int常量.在任何情况下,整数函数参数被提升为int. 然后将结果发送到printf,并使用%d格式说明符,这意味着“打印整数”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |