Đoạn code sau cho kết quả lần lượt là bao nhiêu ? Mã: int a = 10,b; b = a++ + ++a; [URL="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"]printf[/URL]("%d %d %d %d",b,a++,a,++a);
Theo mình thì kết quả là: 21,12,13,14. Không biết có đúng ko nữa. Cái này là tiến tố với hậu tố. Mấy bác vô kiểm chứng cái coi...
Theo mình thì thế này: a++ là tăng a lên 1 đơn vi rồi mờ tính toán -->a++=11; Tiếp tục đem a đi tính toán (a=11),-->++a=11 (vì ++a là thực hiện tính toán rồi mới tăng a lên 1 đv) -->a=12; -->b=a++ + ++a=11+11=22 KQ: b=22, a++=11, a=12,++a=11
Cái câu printf: một số trình biên dịch đẩy nguyên kết quả gốc ra chứ không áp dụng toán tử nên a đều là 13. Thử với các VS 2008 xem sao.
Bởi vì trong biểu thức sẽ thực hiện ++a trước theo thức tự ưu tiên trong toán học a=10;++a=11;a=11 biểu thức b=a + ++a=22 Mọi người giải câu này nè! int a = 0; int r = (-a + ++a ); hỏi r bằng máy và int a = 0; int r = (++a + -a ); hỏi r bằng mấy hãy giải thích vì sao!
b=a + ++a=22 Theo bạn, ++a sẽ tăng giá trị cho a trước khi bắt đầu phép gán b = hay sau dấu + trong biểu thức Đều bằng 1, đoạn này: + -a là +a sau đó -a thì vẫn bằng giá trị ban đầu là ++a (1).
thi` ++a sẽ tăng giá trị cho a trước khi bắt đầu thực hiện phép cộng. Sai rồi bạn ơi! cái trên bằng 1 cái dưới bằng không! không tin thì coppy code mà tha qua vs 2005 hoac 2008 chay thu xem!Chạy xong rồi giải thích luôn vì sao bằng 1 với 0 Mà trong khi đó theo toán học thì (-a + ++a)=(++a + - a) ((phép giao hoán của phép cộng!))