#include<stdio.h>
int main(void)
{
char a=3;
// 把3的二进制序列存到a里面,因为是char类型,只能存放八个比特位
// 00000000000000000000000000000011;3
// 00000011 a
char b=127;
// 00000000000000000000000001111111: 127
// 01111111 b
char c=a+b;
//在提升的时候,两个数字都需要高位补0,然后两个高位补0的数字相加为c,二进制计算逢二进一,只保留八个比特位
// 00000000000000000000000000000011
// 00000000000000000000000001111111
// 00000000000000000000000010000010相加之后的c
// 10000010 如果要以整型类型进行打印,char类型不够打印的,所以要发生整型提升,c的前面全部补1(c在提升时候的内存中的补码),下面打印出来要求是%d,需要有符号数,要求其原码,最后打印出其原码
// 11111111111111111111111110000010 -补码
// 11111111111111111111111110000001 -反码
// 10000000000000000000000001111110 -原码
// -126
printf("%d\n",c);//打印出-126
// 发现a和b都是char类型的,都没有达到一个int的大小,这里就会发生整型提升
return 0;
}
#include<stdio.h>
int main(void)
{
char a=1;
printf("%u\n",sizeof(a));//打印出为1,char 类型的字节为1
printf("%u\n",sizeof(+a));//打印出4,正号a说明已经转换成了整型类型
printf("%u\n",sizeof(-a));//打印出4,同理+a
printf("%u\n",sizeof(!a));//在vs2022编译器下打印出1,在gcc编译器下打印出4
return 0;
}