Xét đoạn mã sau snippets Trường hợp1:Tại sao có sự thay đổi trong hoạt động của toán tử dấu phẩy trong các mã bên dưới?
int main()
{
int a;
a=printf("hello"),printf("joke");
printf("%d",a);
return 0;
}
Trường hợp2:
int main()
{
int a;
a=(printf("hello"),printf("joke"));
printf("%d",a);
return 0;
}
Case3:
int main()
{
int a;
a=10>8?(printf("hello"),printf("joke")):printf("hello");
printf("%d",a);
return 0;
}
Case4:
int main()
{
int a;
a=10>8?printf("hello"),printf("joke"):printf("hello");
printf("%d",a);
return 0;
}
Tôi không thể hiểu được lý do mà khi tôi sử dụng paranthesis trong trường hợp 2, sau đó tôi nhận được đầu ra như hellojoke4, trong khi không sử dụng parantheis tôi nhận được đầu ra như hellojoke5. Theo kết quả đầu ra khi tôi thử sử dụng toán tử bậc ba, thì biểu thức tương tự khi được thực hiện bằng cách sử dụng dấu ngoặc đơn hoặc không sử dụng dấu ngoặc đơn, trả về giá trị đầu ra cuối cùng của lệnh printf là hellojoke4, vì vậy hoàn toàn khác với hành vi trường hợp của toán tử bậc ba. Và sự hiện diện của dấu ngoặc đơn ảnh hưởng đến hoạt động của dấu phẩy như thế nào, nó hoạt động như một dấu phân tách hoặc như một toán tử
Hãy suy nghĩ về nó. Những gì có thể ngoặc đơn có thể làm trong trường hợp này? – juanchopanza
'int a = (1,2);' ',' có mức ưu tiên thấp hơn nên 'a = 2' – Gopi