您的位置:首页 > 财经 > 产业 > C 运算符优先级

C 运算符优先级

2024/12/23 16:41:16 来源:https://blog.csdn.net/m0_59802969/article/details/139635756  浏览:    关键词:C 运算符优先级

在 C 语言中,运算符的优先级决定了在表达式中运算符的计算顺序。以下是 C 语言中运算符优先级表,按从高到低的顺序排列:

1. **括号**: `()` 
2. **后缀运算符**: `[]` (数组下标), `()` (函数调用), `.` (成员访问), `->` (指向成员访问), `++` (后缀自增), `--` (后缀自减)
3. **一元运算符**: `++` (前缀自增), `--` (前缀自减), `+` (正号), `-` (负号), `!` (逻辑非), `~` (按位取反), `(type)` (类型转换), `*` (指针解引用), `&` (取地址), `sizeof` (求大小)
4. **乘法和除法**: `*` (乘法), `/` (除法), `%` (取模)
5. **加法和减法**: `+` (加法), `-` (减法)
6. **移位运算符**: `<<` (左移), `>>` (右移)
7. **关系运算符**: `<` (小于), `<=` (小于等于), `>` (大于), `>=` (大于等于)
8. **相等运算符**: `==` (等于), `!=` (不等于)
9. **按位与**: `&`
10. **按位异或**: `^`
11. **按位或**: `|`
12. **逻辑与**: `&&`
13. **逻辑或**: `||`
14. **条件运算符**: `?:`
15. **赋值运算符**: `=`, `+=`, `-=`, `*=`, `/=`, `%=`, `<<=`, `>>=`, `&=`, `^=`, `|=`
16. **逗号运算符**: `,`

在表达式中,高优先级的运算符会先于低优先级的运算符执行。如果运算符的优先级相同,则按照其结合性(左结合或右结合)决定计算的顺序。

() 的优先级最高,[ ]  第二,  *   ,&第三。所以:

int   *p;     //一个指针

int  *p[3];    //三个指针

int   *p[2][3];     //两行三列共6个指针

int    (*p)[3];      //一个行的指针,但此行含三个元素

int   (*p)[2][3];   //一个2×3的指针

#include <stdio.h>
#include <stdlib.h>int main(void){int p2[3]={1,2,3};int *p22[3]={p2,p2+1,p2+2};int *p33=p2;printf("%d\n",*p22[1]);int  p4[2][3]={{1,2,3},{11,22,33}};int (*p41)[3]=p4;printf("%d\n", *(*(p41+1)+1));int *s=&p4[0][0];int  *p42[6]={s,s+1,s+2,s+3,s+4,s+5};printf("%d\n",*p42[5]);int  *p5[2][3]={{s,s+1,s+2},{s+3,s+4,s+5}};printf("%d\n",*p5[1][0]);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com