Điều gì đang xảy ra ở đây?Ưu tiên của toán tử dấu phẩy bên trong toán tử điều kiện trong C++ là gì?
#include <iostream>
using namespace std;
int main(){
int x=0,y=0;
true? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl; //why does y=0 here?
x=0,y=0;
false ? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl;
}
x: 1
y: 0
x: -1
y: -1
Trường hợp thứ hai có vẻ ổn. Tôi hy vọng cả x và y sẽ tăng lên 1 trong trường hợp đầu tiên nhưng chỉ tăng các toán hạng bên trái.
Vui lòng cung cấp mã thực sự biên dịch - nếu không tôi không thể bị làm phiền để giúp bạn –
'++ y' xảy ra, nhưng sau đó' --y'. 'đúng không? ++ x, ++ y: --x, --y' được phân tách thành '(true? ++ x, ++ y: --x), --y' – oldrinb
@AdrianCornish Mã này biên dịch; bạn đã thử à? – chrisaycock