首页 > > > C语言-运算符的优先级
例行公事,写一下运算符的优先级,给有需要的同学们一些参考资料
看个例子
#include<stdio.h>
int main()
{
int a;
a = 1, 2, 3; // Evaluated as (a = 1), 2, 3
printf("%d", a);
return 0;
}这里涉及逗号“,”运算符和等号“=”运算符。
先不说结果,我们先看看下面这个图


如果上面的程序变成
#include<stdio.h>
int main()
{
int a;
a = 1 + 2, 3; // Evaluated as (a = 1), 2, 3
printf("%d", a);
return 0;
}继续对照上面的图片,加号运算符的优先级比等号运算符的优先级高,那必须的应该是下面的输出结果

下面列举了一些比较容易出错的优先级问题,这些是我们写代码中经常遇到的,希望大家引以为戒

避免优先级引起的问题,我们需要用到 (),这个非常有效,对于优先级不是很确定的,大胆的用,并且多用 (),这样非常有效。
#include <stdio.h>
void main(void)
{
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
printf("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
printf("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
printf("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
printf("Value of a + (b * c) / d is : %d\n" , e );
return 0;
}原文作者:;如有侵权,请联系管理员删除。