在下面的程序中,条件运算符如何改变变量 b 的值?
How does the conditional operator change the value of the variable b in the program below?
#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的值?
我们来看这一行:
*((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。
#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的值?
我们来看这一行:
*((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。