Tôi đã gặp lỗi biên dịch lạ khi sử dụng toán tử điều kiện.Toán tử điều kiện khác trong C++ làm gì cho tôi?
a,b
là giá trị int
và biểu thức sau đây nhận được lỗi biên dịch.
(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)'
Nhưng biểu hiện này hoạt động tốt, đó là số lẻ ..
(a>b)?(std::cout << a) : (std::cout<<b);
Tôi không có ý tưởng những gì làm cho một sự khác biệt như vậy, và không biết tại sao những lỗi biên dịch đứng cho. Dưới đây là thông tin gcc của tôi:
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)`
Đặt câu lệnh có hiệu ứng phụ trong biểu thức điều kiện có vẻ khá xấu. Tại sao không sử dụng câu lệnh if truyền thống? –
@Johannes: Tôi đã gắn cờ nhận xét của bạn là không có cấu trúc. Tại sao không phải là một bình luận giải thích tại sao bạn không thích câu hỏi quá nhiều, thay vì chỉ đơn giản là thô lỗ? –
@Brennan Tôi nghĩ rằng người hỏi biết rất rõ. Tôi đã cố sửa nó bằng cách chỉnh sửa nó, nhưng nó không thể hiểu được. Tôi đã không bao giờ nhìn thấy một 16 được gọi là một chức năng, và không bao giờ nhìn thấy một được sử dụng trong C + + (và đó không phải là một chẩn đoán GCC hoặc). Nếu bạn không định dạng câu hỏi của mình đúng cách, đang ở chế độ SE trong hơn một năm, bạn cần phải nêu rõ câu hỏi đó ở định dạng cho phép người khác định dạng câu hỏi đó. Đó là lý do tại sao tôi -1'ed. Tôi đã xóa nhận xét khác của mình vì tôi thấy thực tế là không hữu ích. –