#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { char c = 1; printf("%u\n", sizeof(c)); //1 printf("%u\n", sizeof(+c));//4 printf("%u\n", sizeof(-c));//4 printf("%u\n", sizeof(!c));//4 gcc-4已gcc为准 return 0; }

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { //整形提升是按照变量的数据类型的符号位来提升的 char a = 3; //00000000 00000000 00000000 00000011 //00000011-a char b = 127; //00000000 00000000 00000000 01111111 //01111111-b char c = a + b; //00000000 00000000 00000000 00000011 //a提升完 //00000000 00000000 00000000 01111111 //b提升完 //00000000 00000000 00000000 10000010 // //10000010-c //11111111 11111111 11111111 10000010 //c整型提升完 内存里面存储的是补码 //11111111 11111111 11111111 10000001//补码-1就是反码 打印出来的原码 //10000000 00000000 00000000 01111110//原码-126 //发现a和b都是char类型的,都没有达到一个int的大小 //这里就会发生整形提升 printf("%d\n",c); return 0; }
浙公网安备 33010602011771号