Tengo un error de compilación extraño al usar el operador de condición.¿Qué más hace el operador de condiciones en C++ por mí?
a,b
son int
valor, y la siguiente expresión obtiene el error de compilación.
(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)'
Pero esta expresión funciona bien, lo que es raro ..
(a>b)?(std::cout << a) : (std::cout<<b);
que no tienen idea de lo que hace una diferencia, y no sé por qué se destacan el error de compilación para. Aquí está mi información 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)`
Poner declaraciones con efectos secundarios en una expresión condicional parece bastante feo. ¿Por qué no usar un enunciado if tradicional? –
@Johannes: He marcado tu comentario como no constructivo. ¿Por qué no un comentario que explica por qué no te gusta tanto la pregunta, en lugar de simplemente ser grosero? –
@Brennan Creo que el interlocutor lo sabe muy bien. Traté de solucionarlo editándolo, pero es incomprensible. Nunca he visto un 16 llamado como una función, y nunca he visto un en C++ (y tampoco es un diagnóstico de GCC). Si no formatea su pregunta correctamente, estando en SE por más de un año, debe al menos indicarlo en un formato que permita a otras personas formatearlo. Es por eso que hice -1. Eliminé mi otro comentario porque descubrí que de hecho no es útil. –