简介 (a?b:c);
三目表达式也称一种条件运算符(?:),a为条件,如果条件为真,整个表达式等于b,如果为假,则整个表达式等于c。
运用
例子1
int a = 0;
int ret = (a == 0 ? 4 : 6);
printf("%d",ret);
return 0;
运行结果:4;
解析:由于a==0条件为真,所以整个表达式等于4;如果条件为a==1,则整个表达式结果为6,运行结果就是6;
举一反三:将条件a==0改成a=1,运行结果又是什么呢?
答案就是:4 因为会执行a=1,表达式执行成功会返回1,即条件为真。
举一个我遇到的错误:
sl->capacity == 0 ? 4 : (sl->capacity) * 2;(sl为结构体,capacity为结构体的的整型成员,且赋值为0)
问题就是:sl->capacity会不会等于4?
解析:不会,因为条件为sl->capacity == 0为真,所以是整个表达式为4,不是sl->capacity为4;
应该将表达式改成:int newCapacity=(sl->capacity == 0 ? 4 : (sl->capacity) * 2);
总结
三目表达式也称一种条件运算符(?:),a为条件,如果条件为真,整个表达式等于b;如果为假,则整个表达式等于c。