http://en.wikipedia.org/wiki/Comma_operator:
Trong C và C++ ngôn ngữ lập trình, toán tử phẩy (đại diện bởi các dấu hiệu ,
) là một nhà điều hành nhị phân mà đánh giá toán hạng đầu tiên của mình và loại bỏ kết quả, và sau đó đánh giá toán hạng hai và trả về giá trị này (và gõ).
Trong if
đầu tiên của bạn:
if (a, b)
a
được đánh giá đầu tiên và bỏ đi, b
được đánh giá thứ hai và trở về như 0. Vì vậy, tình trạng này là sai.
Trong giây if
của bạn:
if (b, a)
b
được đánh giá đầu tiên và bỏ đi, a
được đánh giá thứ hai và trở về như 1. Vì vậy, tình trạng này là đúng.
Nếu có nhiều hơn hai toán hạng, biểu thức cuối cùng sẽ được trả về.
Nếu bạn muốn cả hai điều kiện là đúng, bạn nên sử dụng && operator:
if (a && b)
Bạn biết rằng nó được sử dụng toán tử dấu phẩy trong tình trạng này, tuy nhiên bạn phải tự hỏi? –
Bạn chỉ có thể thêm một điểm ngắt trên câu lệnh đầu tiên và thực hiện dòng chương trình theo dòng bằng cách sử dụng F10 để tự xem luồng. – vish213
@DanielFischer Tôi biết rằng dấu phẩy đóng vai trò như một điểm chuỗi trong các câu lệnh nhưng không phải trong các đối số với các hàm. Bạn có thể cho tôi biết đó có phải là một điểm chuỗi bên trong 'if' không? Tôi cảm thấy trực giác ** có **, nhưng tôi muốn bạn xác nhận. –