C语言中函数参数处理顺序 c语言函数的参数分为哪两种( 三 )


在C语言中 , 只有4个运算符规定了运算方向,它们是、| |、条件运算符及赋值运算符 。
、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值 。如 a = 0b; 运算符的左边位0,则右边表达式b就不再判断 。
在条件运算符中 。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值 。
赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能 。
口诀注释
优先级等级口诀
圆方括号、箭头一句号,自增自减非反负、针强地址长度,
乘除,加减 , 再移位,
小等大等、等等不等 , 
八位与,七位异,六位或 , 五与,四或,三疑,二赋,一真逗 。
其中“,”号为一个等级分段 。
优先级等级注释
“圆方括号、箭头一句号”指的是第15级的运算符 。其中圆方括号很明显“()、[]”,箭头 指的是指向结构体成员运算符“-”,句号 指的是结构体成员运算符“.” ;
“自增自减非反负、针强地址长度”指的是第14级的运算符 。其中 非 指的是逻辑运算符“!”,反 指的是按位取反运算符“~” , 负 指的是负号运算符“-”,针 指的是指针运算符“*”,强 指的是强制类型转换运算符,地址 指的是地址运算符“” , 长度 指的是长度运算符“sizeof ”;
“乘除,加减,再移位”移位指的是左移运算符“”和右移运算符“”,其中除法还包括了 取余运算符“%”;
“小等大等、等等不等” 指的是第10级到第9级的运算符:、=、和=,等等指的是等于运算符==,不等指的是不等于运算符!=
“八位与,七位异,六位或”其中 八位与 指的是第8级的 按位与 运算符“”,七位异 指的是第7级的按位异或运算符“^”,六位或 指的是第6级的按位或运算符“|”;
“五与,四或”指的是第5级、第4级的逻辑与运算符“”和逻辑或运算符“||”;
“三疑,二赋,一真逗”指的是第3级到第1级的运算符 。其中,三疑指的是条件运算符“C语言中函数参数处理顺序?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目 , 疑也取“?”之意) , 二赋 指的是赋值运算符=、+=、-=、*=、/=、%=、=、=、=、^=和|= ,一真逗 指的是第1级的“,”运算符,真字只是为了语句需要罢了 。
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!
应用举例
1、赋值运算符:a=5;
a=b=0;
第一个赋值语句把5赋给变量a;第二个赋值语句的意思是把0同时赋值给两个变量 。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算 , 先b=0,然后a=b 。
2、复合赋值运算符:a=1;a+=3;
上面第二个赋值语句等价于a=a+3;即a=4 。
3、算术运算符:Area=Height*Width;num=num1+num2/num3-num4;
第一个赋值语句Height和Width相乘结果赋给变量Area;第二个赋值语句先完成num2与num3的整除运算,然后与num1相加,再减去num4,结果赋给num 。运算符运算顺序先算乘除再算加减 。单目正和单目负最先运算 。
4、逻辑运算符:a=1,b=1;
a||b-1;
因为a=1为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了 。
5、关系运算符:if(a0)...
如果a0,则执行if语句中的内容 , 否则退出 。

推荐阅读