优先级最高的运算符排序
C语言中运算符优先级排序如下:
分为优先级15级:
1、圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】。
2、逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++】【 --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*】【&】、长度运算符【sizeof】。
3、乘法运算符【*】、除法运算符【/】、取余运算符【%】。
4、加法运算符【+】、减法运算符【-】。
5、左移动运算符【<<】、右移动运算符【>>】。
6、关系运算符【< 】【>】【<=】【 >= 】。
7、等于运算符【==】、不等于运算符【!=】。
8、按位与运算符【&】。
9、按位异或运算符【^】。
10、按位或运算符【|】。
11、逻辑与运算符【&&】。
12、逻辑或运算符【||】。
13、条件运算符【?:】。
14、赋值运算符【=】【/=】【*=】【%=】【+=】【-=】【<<=】【>>=】【&=】【^=】【|=】。
15、逗号运算符【,】。
C 标准定义以下序列点:
(1)运算符&&;运算符||;逗号运算符;条件运算符,的第一个子表达式求值结束后。
(2)函数调用运算符()中对所有实参数完成求值之后。
(3)每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句的表达式,return 语句的表达式,if 或 switch 语句中的控制表达式,while 或 do语句的控制表达式,for 语句的所有三个表达式。
(4)标准库函数返回之前,标准输入输出函数格式化转换说明符关联动作之后,标准查找函数和排序函数在调用比较函数之前和之后及参数传递之后。
由序列点的定义可知,与运算符&&;或运算符||;逗号运算符;条件运算符,等4个运算符的左操作数属于前一个序列点,右操作数属于后一个序列点,因此,这4个运算符的左操作数的求值要先于右操作数完成。