biểu hiện của bạn bool bRet = (pData, pOutFilename);
là một biểu thức hợp lệ, và nó tương đương với biểu thức bool bRet = pOutFilename;
Trong bool bRet = (pData, pOutFilename);
, lần đầu tiên biểu pData
được đánh giá, thì biểu thức thứ hai pOutFilename
được đánh giá, sau đó giá trị của biểu thức thứ hai được gán cho bRet
(đây là cách hoạt động của toán tử ,
từ trái sang phải).
đọc: Comma Operator: ,
Nhà điều hành dấu phẩy ,
có left-to-right associativity
. Hai biểu thức được phân tách bằng dấu phẩy được đánh giá từ trái sang phải. Toán hạng bên trái là luôn được đánh giá và tất cả các tác dụng phụ được hoàn thành trước khi toán hạng đúng được đánh giá.
Để hiểu tầm quan trọng của dấu ngoặc đơn ()
trong biểu thức của bạn, hãy xem xét ví dụ bên dưới. Quan sát đầu ra trong ví dụ này (Tôi có C chẳng hạn):
int main() {
int i = 10, b = 20, c= 30;
i = b, c; // i = b
printf("%i\n", i);
i = (b, c); // i = c
printf("%i\n", i);
}
đầu ra:
20
30
Để hiểu kết quả: look at precedence table,
có độ ưu tiên thấp hơn =
. Trong biểu thức của bạn, bạn đã ghi đè quyền ưu tiên bằng dấu ngoặc đơn.
Nguồn
2013-07-22 10:29:26
Kiểm tra toán tử dấu phẩy.Giống như 'pData; bool bRet = pOutFilename; ' –