#include<stdio.h>
int main()
{
int a = 0, b = 1, c = 2;
*((a+1 == 1) ? &b : &a) = a ? b : c;
printf("%d, %d, %d\n", a, b, c);
return 0;
}
程序的输出为0、2、2。条件语句如何更改C中变量b的值?
答案 0 :(得分:8)
让我们看看这一行:
*((a+1 == 1) ? &b : &a) = a ? b : c;
(a+1 == 1)
是1
,所以变成了
*(1 ? &b : &a) = a ? b : c;
哪个
*(&b) = a ? b : c;
由于a
仍为0
,因此
*(&b) = c;
这意味着将获取b
的地址,并将其指向的值(b
)设置为c
,即2
。所以最后,它所做的就是将b
更改为2
。
如果三元运算符(?
)使您感到困惑,则可以继续阅读here。