ITPub博客

首页 > > > C语言-运算符的优先级

C语言-运算符的优先级

作者:dapan 时间:2018-12-04 10:25:38 0 删除 编辑

例行公事,写一下运算符的优先级,给有需要的同学们一些参考资料


看个例子

#include<stdio.h>  
int main() 
{ 
    int a; 
    a = 1, 2, 3; // Evaluated as (a = 1), 2, 3 
    printf("%d", a); 
    return 0; 
}

这里涉及逗号“,”运算符和等号“=”运算符。

1、运算符优先级分类

先不说结果,我们先看看下面这个图

运算符的优先级,数字越小,优先级越大
上面程序的输出结果

如果上面的程序变成

#include<stdio.h>  
int main() 
{ 
    int a; 
    a = 1 + 2, 3; // Evaluated as (a = 1), 2, 3 
    printf("%d", a); 
    return 0; 
}

继续对照上面的图片,加号运算符的优先级比等号运算符的优先级高,那必须的应该是下面的输出结果

2、比较容易出错的运算符优先级

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

总结的比较容易出错的运算符优先级


3、如何避免优先级引起的问题

避免优先级引起的问题,我们需要用到 (),这个非常有效,对于优先级不是很确定的,大胆的用,并且多用 (),这样非常有效。

#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;
}

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-08-07

  • 博文量
    4504
  • 访问量
    87279