#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;
}