目录
前言
🌏一、整形提升
🍯1.整型提升意义
🍤C的整型算术运算总是至少以缺省整型类型的精度来进行的。
🍤为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。
🍯2.如何整形提升
🍤整形提升是按照变量的数据类型的符号位来提升的
🍯3.例子
实例1:
//实例1
int main()
{
char a = 0xb6;
short b = 0xb600;
int c = 0xb6000000;
if(a==0xb6)
printf("a");
if(b==0xb600)
printf("b");
if(c==0xb6000000)
printf("c");
return 0;
}
🍤a和b是字符和短整型,都要进行整型提升 ,所以前面两个if判断为假
实例2:
//实例2
int main()
{
char c = 1;
printf("%u\n", sizeof(c));
printf("%u\n", sizeof(+c));
printf("%u\n", sizeof(-c));
return 0;
}
🍤实例2中的,c只要参与表达式运算,就会发生整形提升,表达式+c ,就会发生提升,所以sizeof(+c)是4个字节.
🍤表达式-c也会发生整形提升,所以sizeof(-c)是4个字节,但是sizeof(c),就是1个字节.
🌏总结
判断是否发生整形提升:
🍤是字符或者短整型
🍤进行了表达式运算