30/09/2018, 18:17
Toán từ tăng giảm trong C
#include<stdio.h>
main()
{ int a=1,b=2,x=0;
a=a+b++; //a=1+2=3
b=a+b++; //3+2=5 ->tang len ->b=6
x=a-b--; //3-6=-3.
a=(x>b) ? x:b; //neu x>b dung thi a=x sai thi lay a=b. TH nay sai ->lay a=b
x=a+b;
printf("x = %d
",x);
}
//ket qua bang 10
Em giải thích vậy đúng chưa ạ? ai có thể giải thích rõ hơn cho em được không?
Bài liên quan
Khởi tạo
Phân tích này đúng
Bây giờ
Phân tích này sai
Phải là
Bây giờ
Phân tích này sai
Phải là
Bây giờ
Phân tích này đúng
Bây giờ
Phân tích này sai
Phải là
saoem chay code ra ket qua la 10 a?
cung co ban chay ra 12 nhung em chay lai ra 10
#include<stdio.h>
main()
{ int a=1,b=2,x=0; //thu tu a ,b ,x lan luot la
a=a+b++; //3
printf(" Lan 1. %d %d %d\n",a, b, x);
b=a+b++; //3+2=5 ->tang len b=6
printf(“Lan 2. %d %d %d\n”,a, b, x);
x=a-b–; //3-6=-3. // b=6 do b-- nen b=5
printf(“Lan 3. %d %d %d\n”,a, b, x);
a=(x>b) ? x:b;
printf(“Lan 4. %d %d %d\n”,a, b, x); //x<b =>a=b=5 .tai thoi diem nay x=-3
x=a+b; //x=a+b=5+5=10
printf(“x = %d\n”,x);
printf(“Lan cuoi . %d %d %d\n”,a, b, x);
}
/*em da viet cu the ra theo cach nay kq van ra 10 anh a? anh xem ro hon ho em voi. toan tu hoi lang nhang anh a?
co nguoi ra kq nay co nguoi ra kq kia */
Mình nghĩ vấn đề ở chỗ dòng b=a+b++ ấy, sau khi thực hiện dòng này trình biên dịch nó ko tăng b lên 1. Mình chạy trên codeblock, bạn thử chạy trên trình biên dịch khác xem kết quả thế nào
Kết quả cuối cùng là 10 nhé.
lúc này
a = 3, b = 3 và x = 0;
thứ tự tính toán là cộng a + b = (3 + 3) = 6, sau đó b++ = 4 và cuối cùng b được gán 6 là kết quả cuối cùng
// b = 6 nhé.
theo mình nhớ thì phép gán (=) có độ ưu tiên thấp nhất trong biểu thức này nhé, cho nên các phép tính toán phải được thực hiện xong hết rồi phép gán (=) mới được thực hiện.
neu nhu the thi a bang bao nhieu ? neunhu vay thi ket qua la 12 a? minh chay ra 10 ma
x = -3
b = 5
a = 5
Kết quả cuối cùng là x = 10 nhé
minh cung chay ra 10. va khi code cu the nhu o tren de kiem tra thi dung la 10.Cam on ban nhieu! Ban co dia chi email chu , lam quen chut