虽然程序中代码在编译环节是从上到下,从左到右。但是当代码中包含运算符时,会优先执行运算符对应的优先级。所以,运算符之间是存在优先级的。
例1
加减乘除,和数学中一样,先乘除后加减,如果希望先加减,则要使用"()"小括号包裹起来,这样会先计算括号内的。
int a = 10 - 2 * 5;
上述代码的中的优先级分别为:
如果代码中只存在乘除,或者加减。
int a = 10 * 2 / 5; // a = 4
int b = 10 - 2 + 5; // b = 13
1:优先级相同时,从左往右依次执行
上述代码中,a = 4,b = 13
算数运算符中优先级从低到高,分别为:
1:"+" "-"
2:"%" "*" "/"
也就是说,程序中,如果有乘除,则乘除和取模是第一优先级,然后是加减。
但是,如果代码中,出现了小括号"()",则无论是什么算数运算符,先计算小括号中的内容。
// 1.当有括号时,先计算括号内的。
int a = (10 + 5) * 2;
// 2.加减和乘除时,会先计算乘除,然后计算加减
// 乘除不区分优先级,谁在左边谁先计算
// a = 13.8
int a = 10 + 5 - 3 * 2 / 5;
// 3.乘除运算,优先级相同,从左向右依次计算
int a = 10 * 2 / 5;
// 4.取模和乘除,乘除的优先级大于取模运算。
// 所以会先计算乘除,后计算取模
int a = 10 % 2 * 5;
例2
算数运算符的级别高于关系运算符。
当代码中同时出现算数运算符和关系运算符时,程序将会先执行算数运算符。
if(15 > 2 * 5)
{
}
以上代码结果为真(true)!
总结:算数运算符的级别高于关系运算符。先计算,后对比关系(大小判断)。
例3
逻辑运算符,"&&" 和 "||"
这两者之间,"&&" 的级别高于 "||",所以"&&"会先计算
if(10 > 2 && 1 > 2 || 3 > 2)
{
}
上述代码中,条件判断为真(true)
因为"&&"的级别高,所有 "&&"相关联的条件首先会被当成一组条件。
10 > 2 && 1 > 2 (最终返回false)
false || 3 > 2 (最终返回true)
所有算数运算符中。
算数运算符>关系运算符>逻辑运算符>赋值运算符。
先计算乘除加减>比对大小>判断逻辑>最后赋值