2014-02-24 61 views
4

我看到這個代碼C++中的「a <?= b」是什麼意思?

a<?=b; // (a and b are int) 

從谷歌編程挑戰的解決方案。

但我的VS在'?'上顯示錯誤

我只知道以下幾點:

a>b?a=0:b=0; 

感謝。

+1

這不可能工作。 –

+3

這看起來不像是有效的c/C++。 –

+0

https://code.google.com/codejam/contest/32003/scoreboard?c=32003#vf=1請檢查sclo的問題答案c 40pt。 – czhao86

回答

9

舊算子;這是一個(自刪除)gcc擴展'最低'。那就是:

a <?= b; 

相同:

a = a < b ? a : b; 
+1

哇,我確定這是無效 – jeremy

+0

@jeremy不是。 –

+1

我猜它不是C/C++有效,但是它是gcc有效的(或者是gcc有效:)) – jeremy

1

非標準GCC擴展C++允許<?作爲操作員這相當於min。我之前沒有看到過<?=,但推測這是一個原地版本;即a <?= b相當於a = min(a,b)

請注意,海灣合作委員會開發人員第二天早上醒來,意識到這是一個壞主意。操作員現在已棄用。

1

如果a恰好大於b,它會將a設置爲b。

基本上相同:

a = a < b ? a : b; 

實施例:

int a = 5; 
int b = 2; 
a<?=b; //a is now 2! 

我實際上不會提倡使用這樣的解決方案,雖然,它是可怕的。

正如其他人所說,它是非標準GCC擴展的一部分,但請不要使用它。