Yog*_*Raj 2 c conditional ternary-operator
#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;
}
Run Code Online (Sandbox Code Playgroud)
程序的输出是0,2,2.条件语句如何改变C中变量b的值?
我们来看看这一行:
*((a+1 == 1) ? &b : &a) = a ? b : c;
Run Code Online (Sandbox Code Playgroud)
(a+1 == 1)是1这样的
*(1 ? &b : &a) = a ? b : c;
Run Code Online (Sandbox Code Playgroud)
这是
*(&b) = a ? b : c;
Run Code Online (Sandbox Code Playgroud)
由于a仍然是0,也就是
*(&b) = c;
Run Code Online (Sandbox Code Playgroud)
这意味着获取地址b,并将其指向(b)的值设置为c,即2.那么到底,它的作用是改变b到2.
如果三元运算符(?)让您感到困惑,可以在此处阅读.