运算符在C语言程序中必不可少,运算符的优先级也决定了程序的运行结果,我们一定要熟记重要运算符优先级的顺序。
笔者认为较好的优先级顺序在这儿:
(感谢)
http://blog.csdn.net/u013630349/article/details/47444939
口诀:
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低
这些口诀可以帮助我们快速记忆优先级
优先级的记忆可以帮我们快速理解程序,省的像我昨天搞错优先级,很简单的题算了好久,特别是那些经常记错的的优先级。给几道例题:
#include <stdio.h>
int main()
{
double b = 5 % 3 & 4 + 5 * 6;
printf("%lf", b);
}
就像这道题参照优先级计算就很简单&(按位与)的优先级除了等号就是他最低,先算&两边的,最后很快得出结果output=2.000000. 搞错优先级的话是计算不对结果的。同时也要注意按位与,按位或的计算方式,都是先转变为二进制再进行计算。
希望在以后的学习过程中更多的注重细节,争取成为一个更优秀的程序员。
类似的题目还有:
#include <stdio.h>
void main()
{
double b = 5 & 3 && 4 || 5 | 6;
printf("%lf", b);
}
output=1.000000
#include <stdio.h>
int main()
{
int b = 5 + 7 * 4 - 9 * (3, 2);
printf("%d", b);
}
output=15(注意逗号运算符的用法)
#include <stdio.h>
int main()
{
int h = 8;
int b = 4 * 6 + 3 * 4 < 3 ? 4 : 3;
printf("%d\n", b);
}
output=3
这道题三目运算符的优先级最低,先算乘法, 加法,最后再三目运算符。
感谢