01/10/2018, 00:09
Thứ tự ưu tiên toán tử trong c
mọi người cho em hỏi sao bài thứ nhât kết quả lại là 1 và bài thứ 2 kết quả bằng 13 ạ. em tính không ra
#include <stdio.h> int main() { double b = 5 & 4 && 2 || 5 | 6; printf("%lf", b); }
#include <stdio.h> int main() { int a = 3; double b = ++a + a++ + --a; printf("%lf", b); }
Bài liên quan
Về cái đầu tiên, vì
&&
và||
có ưu tiên thấp hơn bitwise operators, nên được thực hiện sau cùng, mà kết quả trả về của logical operators là 1 hoặc 0 (true hoặc false) nên b = 1 là đúng rồi.Còn cái thứ 2, mình cũng chả hiểu tại sao luôn , cứ nghĩ nó là 12?
Cái thứ hai mình nghĩ là 4+5+4
sao một hồi tìm tòi thì mình phát hiện nó là lỗi undifined behavior
Ừ, như thế thì đúng là ra 13 thật, nhưng mà số thứ 2 là tăng sau mà, sau lại là 5?
Bạn giải thích cụ thể hơn được không?