C++ 优先级与结合性

文章讲述了C语言中运算符的优先级和结合性规则,强调了在混合使用不同运算符时如何确定表达式值。同时讨论了自动类型转换和强制类型转换可能导致的问题,以及如何通过强转消除警告。
摘要由CSDN通过智能技术生成

在这里插入图片描述
运算优先级和结合性
表达式有多种运算符混合使用时,求解表达式的值,首先要解决各种运算符的运算优先次序问题。即,优先级和结合性。
例如:下面表达式的值取决于5种运算符的优先次序。
在这里插入图片描述
优先级是指不同级别运算符之间的运算次序,先高后低,优先级共有15级。
在这里插入图片描述
分级的原则是:
1.
单目运算符的优先级高于双目运算符 双目运算符优先级高于三目运算符。
2.
在双目运算符中 算术运算符 高于 关系运算符 关系运算符 高于 逻辑运算符
3.
在位运算符中 移位运算符 高于 关系运算符
位逻辑运算符
低于 关系运算符
4.
园括号 运算符优先级最高 逗号运算符 优先级最低 赋值运算符 及 复合赋值
运算符 的优先级仅高于逗号运算符
结合性是指在一个表达式中有多个优先级相同的运算符之间的运算次序
右结合性
右 ---->左 单目 三目和赋值运算符
左结合性
左 ---->右 其余运算符

表达式与赋值中的自动类型转换
相同类型数据的运算结果,还是该类型。
不同类型数据的运算结果,是两种类型种取值范围大的那种
LONG DOUBLE>DOUBLE>FLOAT>LONG>INT>SHORT>CHAR
在这里插入图片描述
表达式与赋值中的自动类型转换
取值范围小的类型赋值给取值范围大的类型是安全的
反之是不安全的
若大类型的值在小类型能容纳的范围之内,则平安无事
但是浮点数转为整数,会丢失小数部分,而非四舍五入
反之转换后的结果必然是错误的,具体结果与机器和实现方式有关。
避免如此使用,好的编译器会发出警告。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i = 5;
	float f = 73.2;
	char c = 'a';
	i = f;
	f = c;
	c = i;
	printf("i=%d\n", i);
	printf("f=%.2f\n", f);
	printf("c=%c\n", c);
	system("pause");
}

自动类型转换与强制类型转换运算符
强转(Casting)可以消除从大到小的警告
通过下面方式把表达式的值转为任意类型
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值