条件演算子を使用しているときに私は奇妙なコンパイルエラーが発生しました。C++の条件演算子は、私にとって何が他にありますか?
a,b
はint
であり、次の式はコンパイルエラーとなります。
(a>b)?(std::cout << a) : (std::cout<<b);
奇数である。しかし、この表現がうまく機能
(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)'
は、..私は、このような違いは何見当がつかない、とコンパイルエラーが放置理由を知りません。ここに私の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)`
条件式に副作用を入れたステートメントを置くことはかなり醜いです。なぜ伝統的なif文を使用しないのですか? –
@Johannes:私はあなたのコメントを非構造的としています。なぜ単にあなたが失礼ではなく、質問をあまり嫌うのかを説明するコメントはありませんか? –
@ブリーナン私は、質問者がそれをよく知っていると思います。私はそれを編集して修正しようとしましたが、理解できません。私は関数のように呼ばれる16を見たことがなく、がC++で使われることはありませんでした(それはGCC診断でもありません)。あなたの質問を適切に書式化しないでSE上に1年以上いる場合は、少なくとも他の人が書式設定できる形式で書かなければなりません。だから私は-1です。実際に役に立たないことがわかったので、私は他のコメントを削除しました。 –