2013-04-20 21 views
8
gördüm

< = ve > = bir kod kullanılan:? Ben standart olmadığını test etmek içerir olmadan derlemeye çalıştık http://community.topcoder.com/stat?c=problem_solution&rm=151152&rd=5854&pm=2923&cr=310333<= operatörü C++ daha az soru işareti imzalamak eşittir

ama etmedim Çalışıyorum İşte

question-mark.cpp:15:5: error: expected primary-expression before ‘?’ token question-mark.cpp:15:6: error: expected primary-expression before ‘=’ token question-mark.cpp:15:9: error: expected ‘:’ before ‘;’ token question-mark.cpp:15:9: error: expected primary-expression before ‘;’ token

#include <stdio.h> 
#include <algorithm> 
#include <iostream> 
#include <sstream> 
#include <string> 
#include <vector> 

using namespace std; 

int main() 
{ 

    int x = 3; 
    int y = 2; 
    x >?= y; 
    printf("x = %d\n", x); 

    return 0; 
} 

o bağlantıdan kodunda nasıl kullanıldığını var:

x <?= h[i][j]; // x = (h[i][j] < x) ? h[i][j] : x; 

nasıl bu iş yapabilirsiniz Sonra içerir, ancak hala aynı hatayı veriyor eklendi?

+0

olası yinelenen [ne yapar?> = Işleç ortalaması?] (Http://stackoverflow.com/questions/5199630/what-does-the-operator-mean) – 0x499602D2

+0

Lütfen en iyi cevabı seçin. – 0x499602D2

cevap

9

Bunlar GCC uzantı operatörleridir. a <?= b, a = min(a, b) ile aynı anlama sahiptir (>?= "max" operatörüdür), ancak sol taraftaki ifadesini yalnızca bir kez değerlendirir. Bu, a bir değişken olduğunda bu önemli değildir, ancak özellikle ifade bir yan etki olduğunda, a bir ifadeyi temsil ettiğinde fark yaratabilir. Örneğin,

*dest++ <?= *src++; 

yılında dest++ yılında ++ sadece bir kez değerlendirilecektir.

Her iki operatör de şu anda deprecated olmuştur.

+0

Teşekkürler! Güzel. min ve max daha okunabilir. =) – Leandro

+1

Tam olarak aynı olduğundan emin değilim çünkü '

3

Bu bir GCC uzantısıdır. Gerçi bir süre kullanılan görmedim

x = max(x, y); 

: x >?= y eşdeğerdir.

+0

Şüphesiz ki x = max (x, y) 'olmalıdır? –

+0

+1 Mümkünse biraz kaynak verebilir misiniz? – taocp

+1

@tacp: [Burada] belirtildiler (http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Deprecated-Features.html#Deprecated-Features) ve kaldırıldı. –

İlgili konular