一、条件运算符(也叫三目操作符)
exp1 ? exp2 : exp3
int main()
{
int a = 3;
int b = 0;
//1、if条件语句
if (a > 5)
b = 1;
else
b = -1;
//2、三目操作符
b = ( a > 5 ? 1 : -1 );
return 0;
}
运行结果是:
在b = ( a > 5 ? 1 : -1 );
中a > 5 ? 1 : -1
是三目操作符,其中 a>5
是表达式①,1
是表达式②,-1
是表达式③。
若a满足表达式①,即表达式①为真,则表达式③不计算,整个表达式的结果是表达式②的结果,把表达式②的值赋给b;
若a不满足表达式①,即表达式①为假则表达式②不计算,整个表达式的结果是表达式③的结果,将表达式③的值赋给b。
二、逗号表达式
exp1, exp2, exp3,..., expN
逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
例子1:
int main()
{
int a = 3;
int b = 5;
int c = 0;
//逗号表达式 ---要从左向右依次计算,但是整个表达式的结果是最后一个表达式的结果
int d = (c = 5, a = c + 3, b = a - 4, c += b);
// c=5 a=8 b=4 c=9
printf("d = %d\n", d);
return 0;
}
运行结果是:
if(a = b+1, c = a / 2, d > 0)
在这个三目运算符中我们仍然需要从左往右运算,真正决定if判断语句的还是d > 0
,而且d可能受到逗号表达式中前部分代码的影响。若d > 0,则进入if语句,否则不进入if语句。