Ho un errore di compilazione strano durante l'utilizzo dell'operatore condizione.Cos'altro fa l'operatore di condizioni in C++ per me?
a,b
sono il valore int
e la seguente espressione ottiene errore di compilazione.
(a>b)?(std::cout << a) : (b=MAX);
16 (b <unknown operator> 5)'
(a>b)?(a=MAX) : (std::cout<<b);
16 (&std::cout)->std::basic_ostream<_CharT, _Traits>::operator<< [with _CharT = char, _Traits = std::char_traits<char>](b)'
Ma questa espressione funziona bene, il che è strano ..
(a>b)?(std::cout << a) : (std::cout<<b);
ho idea che cosa rende una tale differenza, e non so perché stare l'errore di compilazione per. Ecco le mie informazioni gcc:
Reading specs from ./../lib/gcc/mingw32/3.4.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e
nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
ation --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.2 (mingw-special)`
Mettere le dichiarazioni con effetti collaterali in un'espressione condizionale sembra piuttosto brutto. Perché non usare una dichiarazione if tradizionale? –
@Johannes: ho contrassegnato il tuo commento come non costruttivo. Perché non un commento che spiega perché non ti piace così tanto la domanda, invece di essere semplicemente maleducato? –
@Brennan Penso che l'interrogante lo sappia molto bene. Ho provato a risolverlo modificandolo, ma è incomprensibile. Non ho mai visto un 16 chiamato come una funzione, e mai visto un essere usato in C++ (e non è neanche una diagnostica GCC). Se non si formatta la tua domanda correttamente, essendo il SE per oltre un anno, è necessario almeno affermare in un formato che consente ad altre persone di formattarlo. Ecco perché ho -1'ed. Ho rimosso il mio altro commento perché ho scoperto che in realtà non è utile. –