【C语言】C语言运算符优先级详解

03-31 1761阅读

【C语言】C语言运算符优先级详解

文章目录

  • 📝前言
    • 🌉运算符优先级简述
    • 🌠逻辑与和逻辑或
      • 🌉赋值和逗号运算符
      • 🌠位运算
        • 🌉条件表达式
        • 🌉位运算与算术运算结合
        • 🌉混合使用条件表达式和赋值运算符
        • 🌉 逗号运算符的使用
        • 🌉 复杂条件表达式
        • 🌠运算符优先级的重要性
        • 🚩总结

          📝前言

          在C语言中,运算符的优先级决定了表达式中各个运算符的计算顺序。了解这些优先级对于正确理解和编写复杂表达式至关重要。本文将深入探讨C语言中各种运算符的优先级及其影响。

          🌉运算符优先级简述

          C语言中的运算符根据其优先级可以分为多个级别。在表达式中,具有较高优先级的运算符会在具有较低优先级的运算符之前执行。下表列出了C语言中常见的运算符,并按照优先级从高到低的顺序排列:

          优先级运算符描述
          1() [] -> .函数调用、数组下标、结构体成员访问
          2! ~ ++ – + -逻辑非、按位取反、自增、自减、正负号
          3* / %乘法、除法、取模
          4+ -加法、减法
          5>左移、右移
          6=关系运算符
          7== !=等于、不等于
          8&按位与
          9^按位异或
          10|按位或
          11&&逻辑与
          12||逻辑或
          13?:条件表达式
          14= += -= *= /= %= &= ^= |= =赋值及复合赋值
          15,逗号运算符

          🌠逻辑与和逻辑或

          #include 
          int main() {
              int a = 5, b = 10, c = 15;
              int result;
              result = (a > b) && (b  b) && (b  b) || (b  b) || (b  
          

          【C语言】C语言运算符优先级详解

          在第一个表达式中,(a > b)为假,因此不会继续执行后面的 (b b)为假,但由于逻辑或运算符的存在,依然继续执行 (b

          🌉赋值和逗号运算符

          #include 
          int main() {
              int a = 5, b = 10, c = 15;
              int result;
              result = (a = b, b = c, c);    // 15
              printf("Result = %d\n", result);
              return 0;
          }
          

          【C语言】C语言运算符优先级详解

          该表达式先执行 a = b,然后执行 b = c,最后返回 c 的值。因此结果为15。

          🌠位运算

          #include 
          int main() {
              int a = 5, b = 10, c = 15;
              int result;
              result = a | b & c;    // 15
              printf("Result = %d\n", result);
              return 0;
          }
          

          【C语言】C语言运算符优先级详解

          位与运算符(&)的优先级高于位或运算符(|),所以 b & c 先被计算,然后将结果与 a 进行位或运算,得到最终结果15。

          🌉条件表达式

          #include 
          int main() {
              int a = 5, b = 10;
              int result;
              result = (a > b) ? a : b;    // 10
              printf("Result = %d\n", result);
              return 0;
          }
          

          【C语言】C语言运算符优先级详解

          条件表达式 (a > b) ? a : b 先判断 (a > b) 是否为真,如果为真则返回 a,否则返回 b。因为在这个示例中 (a > b) 为假,所以返回结果为10。

          🌉位运算与算术运算结合

          #include 
          int main() {
              int a = 5, b = 10, c = 3;
              int result;
              result = a + b 
              int a = 5, b = 10;
              int result;
              result = (a  b) ? (a *= 2) : (b /= 2);    // b = 5 / 2 = 2
              printf("Result = %d\n", result);
              return 0;
          }
          
              int a = 5, b = 10, c = 15;
              int result;
              result = (a = b + 2, b = c - 3, c * 2);    // 30
              printf("Result = %d\n", result);
              return 0;
          }
          
              int a = 5, b = 10, c = 15;
              int result;
              result = (a  b) ? ((b  c) ? (a + b) : (b + c)) : (a + c);    // 20
              printf("Result = %d\n", result);
              return 0;
          }
          
          p在这个示例中,先判断 (a b),如果为真则进一步判断 (b > c),如果也为真则返回 (a + b),否则返回 (b + c);如果 (a > b) 为假,则直接返回 (a + c)。因为在这个示例中 (a > b) 为假,所以返回结果为20。

          🌠运算符优先级的重要性

          深入理解运算符优先级对于编写高效、清晰的代码至关重要。在编写复杂表达式时,合理使用括号可以消除歧义,并确保表达式按照预期的顺序计算。错误的运算符优先级使用可能导致意外的结果,因此程序员应该牢记优先级规则并善加利用。


          🚩总结

          【C语言】C语言运算符优先级详解

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]