三目運算子
三目運算表示式:<表示式1>?<表示式2>:<表示式3>
例如:
(a>b) ? a:b
C和C++中三目運算子區別
- 在c語言中,三目運算子返回變數的值,即不能當左值。
編譯報錯,提示 (a<b ? a:b) 不能當左值:#include<stdio.h> int main() { int a = 10 ; int b = 20 ; (a<b ? a:b) = 30; printf("a=%d",a); return 0; }
[root@8a7aa77a8ba4 ~]# gcc test.c test.c: 在函式‘main’中: test.c17: 錯誤:賦值運算的左運算元必須是左值 (a<b ? a:b) = 30; ^
- 在c++中,三目運算子返回變數本身,即可以當左值。
輸出結果:#include<iostream> using namespace std; int main() { int a = 10 ; int b = 20 ; (a<b ? a:b) = 30; cout<<"a="<<a<<endl; return 0; }
a=30
如何讓c語言的三目運算子當左值?
要讓c語言三目運算子當左值,只需要三目運算子返回變數本身,即可以如下操作:*(a<b ? &a:&b) = 30
輸出結果:#include<stdio.h> int main() { int a = 10 ; int b = 20 ; *(a<b ? &a:&b) = 30; printf("a=%d\n",a); return 0; }
a=30
本作品採用《CC 協議》,轉載必須註明作者和本文連結