int a=2,b=3,c=-1;d=a?b:c;此处 d 的值为?
d=a?b:c;
三目运算符:如果d=a,执行b,反之执行c
所以
a=2
b=3
c=-1
d=3
这是三目运算符
神tm如果d=a
d=a?b:c是赋值,赋值运算符优先级最低,是最后执行的
所以三目运算符本身是a?b:c这个表达式
当a是true时,返回b,当a是false时,返回c
那么实际等价于
if(a)d=b;
else d=c;
-=-=-==-
那么回到题目,a的值是2,是个int型,然而if里面需要一个bool型的表达式
如果是c#、java之类的强类型编程语言,这个语法要报错的,无法编译,而C语言是弱类型的,值类型之间可以隐式相互转换
规则如下:int转bool,非0为true,0为false
a的值是2,所以转换完是true,所以执行d=b
所以d的值是3
这是一个判断句
就是假如说d=a,那么就输出b,
如果不等于就输出c.