以下程序的输出是: 3 1 3
int main()
{
int a = 0, b = 1, c = 3;
*((a) ? &b : &a) = a ? b : c; // Couldn't understand expression
printf("%d %d %d \n", a, b, c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
三元运算符如何在此处输出此输出?
*( (a) ? &b : &a) = a ? b : c ;
^ ^
= 0 = 0
==false ==false
Run Code Online (Sandbox Code Playgroud)
所以上面的表达方式:
*( &a) = c ;
Run Code Online (Sandbox Code Playgroud)
那是:
a = c ;
Run Code Online (Sandbox Code Playgroud)
因为c = 3;,所以它给:
a = 3 ;
Run Code Online (Sandbox Code Playgroud)
b是1和c是3在你的宣言(保持不变).