C语言学习笔记

133 阅读2分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。

int main()
{
	char a = 3;
	//00000000000000000000000000000011
	//00000011 -- a
	char b = 127;
	//00000000000000000000000001111111
	//01111111 -- b
	//a和b如何相加
	//00000000000000000000000000000011
	//00000000000000000000000001111111
	//00000000000000000000000010000010
	//放到char中,只存八个比特位
	//10000010 --c
	// 发生整型提升
	//11111111111111111111111110000010 -- 补码
	//11111111111111111111111110000001 -- 反码
	//00000000000000000000000001111110 -- 原码
	//-126
	char c = a + b;

	printf("%d\n", c);

	return 0;
}

正数的整型提升:

char c1 =  1;

'变量c1的二进制位(补码)中只有八个比特位:00000001

因为char 为有符号的char

所以整型提升的时候,高位补充符号位,即0

整型提升后的结果为:

00000000000000000000000000000001

负数的整型提升:

char c2= -1;

'变量c2的二进制位(补码)中只有八个比特位:11111111

因为char 为有符号的char

所以整型提升的时候,高位补充符号位,即1

整型提升后的结果为:

00000000000000000000000011111111

无符号的整形提升,高位补0

算术转换

int main()
{
	printf("%u\n", sizeof(long double));//8
	printf("%u\n", sizeof(double));//8
	printf("%u\n", sizeof(float));//4
	printf("%u\n", sizeof(unsigned long int));//4
	printf("%u\n", sizeof(long int));//4
	printf("%u\n", sizeof(unsigned int));//4
	printf("%u\n", sizeof(int));//4


	return 0;
}

 操作符的属性

优先级

第一级:圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】。

第二级:逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】。

第三级:乘法运算符【*】、除法运算符【/】、取余运算符【%】。

第四级:加法运算符【+】、减法运算符【-】。

第五级:左移动运算符【<<】、右移动运算符【>>】。

第六级:关系运算符【< > <= >= 】。

第七级:等于运算符【==】、不等于运算符【!=】。

第八级:按位与运算符【&】。

第九级:按位异或运算符【^】。

第十级:按位或运算符【|】。

第十一级:逻辑与运算符【&&】。

第十二级:逻辑或运算符【||】。

第十三级:条件运算符【?:】。

第十四级:赋值运算符【= += -= *= /= %= >>= <<.= &= |= ^=】。

第十五级:逗号运算符【,】。