Cho em hỏi sau khi nhập đoạn code này thì chtrinh chạy ra kết quả là: 2 3. Vì sao vậy ạ?
int a=2, b=3;
int d, e;
d= a, b;
e= (a, b);
cout << d << '\n' << e << endl;
Cho em hỏi sau khi nhập đoạn code này thì chtrinh chạy ra kết quả là: 2 3. Vì sao vậy ạ?
int a=2, b=3;
int d, e;
d= a, b;
e= (a, b);
cout << d << '\n' << e << endl;
thứ nhất trong C++ dấu phẩy là toán tử như + - * / ấy :V Nếu a + b trả về tổng của a và b thì a, b trả về b, ví dụ 3+1, 5+6 thì nó trả về 11.
thứ hai độ ưu tiên của toán tử , rất thấp :V https://en.cppreference.com/w/cpp/language/operator_precedence phải nói là thấp nhất luôn :V Vì thế nó luôn tính hết kết quả vế trái, vế phải rồi mới trả về kết quả vế phải. Ví dụ 1+2*3 thì 2*3 tính trước rồi mới thực hiện 1+6 sau. a+b,c thì a+b sẽ được tính trước chứ ko phải b,c
ở đây d = a, b thì d = a tính trước, trả về d (dấu = cũng là toán thử, trả về biến ở vế trái sau khi gán vế trái = vế phải), rồi sau đó thực hiện d, b là trả về b. Vậy cả câu lệnh này chỉ có nghĩa là gán d = a :V Nếu có () thì nó thực hiện lệnh trong () trước như (1+2)*3 vậy ấy. e = (a, b) thì a, b trong ngoặc thực hiện trước trả về b, rồi thực hiện e = b. Xuất d, e mà trước đó d = a, e = b thì in ra 2 3.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?