linux c 条件表达式(三元表达式)及逗号表达式


1 c语言之条件运算符及条件表达式

条件运算符(? :)是C语言中唯一一个三目运算符,函数原型如下:

表达式1?表达式2:表达式3

当“表达式1”返回非0时,此时返回“表达式2”的结果,否则返回“表达式3”的结果。
例:
int a,b,c;
c=(a>b)?a:b;
当a>b成立时,将a的值赋值给c,否则将b的值赋值给c;
c=(a==b)?0:((a>b)?-1:1);
这是一个内嵌的表达式,需要从最内层的表达式开始计算。
当a=b时 结果为0
当a>b时 c的值 -1
当a
2 c语言之逗号运算符及逗号表达式

逗号运算符是设计多个表达式的运算,常见的表达式结构如下:

表达式1,表达式2,表达式3,表达式4…表达式n;

在逗号运算符中每个表达式的求值是分开进行的,对逗号运算符的表达式不进行类型转换,
先求表达式1 ,然后求表达式2的值,依次进行表达式的求值…直到表达式n的求值,并将表达式n的值赋给左边的标识符。
int a,b=10;
b=a++,a%3;
// 1 先求表达式1的值为 10
// 2 a进行自增计
// 3 计算表达式2的值为 11%3 =2
//所以b的值为表达式2的值 为2;