逗号表达式的使用

逗号操作符,是优先级最低的一个。

eg1:

#include<stdio.h>

int main()
{
    int a,b;
    a=b=1;
    b=a++,b++,++a;
    printf("b=%d
",b);
   return(0);
}

eg2:

#include<stdio.h>

int main()
{
    int a=8;
    printf("%d",(a=3*5,a*4));
   return(0);
}

c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60

表达式说明
表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。

这样eg2输出60就没有疑问了,那么eg1呢?

eg1中,先执行 b=a++ ,此时 b 为 1 。 然后 b++ ,所以 b 的值 最终为 2。

逗号操作符,让运算顺序有了先后,故看到a++和++a在同一表达式中时不要以为是UB。

原文地址:https://www.cnblogs.com/yangguang-it/p/7294491.html