c语言学习总结

逗号表达式与自增自减

自增自减

b = a++ 等价于 b = a; a = a+1;

b = ++a 等价于 a= a+1; b = a;

逗号表达式

一般形式:e1,e2,e3,.....,en

  • 逗号是一个多目运算符,且优先级最低,而且是左结合,又称为顺序求值运算符,依次运算e1,e2.....,en

  • 整个逗号表达式的值为最后一个en的值

  • 逗号表达式与函数中参数的区别:

    printf("d%, d%, d%", a, b, c); // 三个值从右往左运算
    printf("d%",( a, b, c)); // 三个值从右往左运算
    

eg:

int sum = num = 7;
sum = ++num, ++num;

上式最终num = 9 sum = 8,因为赋值运算符的优先级高于逗号表达式,所以第一个++num运算完后,就赋值给了sum。

改成如下,则sum的值为9:

int sum = num = 7;
sum = (++num, ++num);

注意: 遇到计算结果与预期明显不符的情况,可以先检查是否优先级理解错误,通常都是优先级搞错。

常引起问题的有逗号运算符与赋值运算符、&作为取址运算符和&作为位运算符的两种情况

你可能感兴趣的:(c语言学习总结)