Chào, Khách!
  1. integer
    Offline
    integer   [1.695/1.313]
    Đ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);
    kienkon thích bài này.
  2. xuanducit
    Offline
    xuanducit   [60/37]
    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...
    kienkon thích bài này.
  3. lyvinhr00m
    Offline
    lyvinhr00m   [1.234/930]
    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
    kienkon thích bài này.
  4. integer
    Offline
    integer   [1.695/1.313]
    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.
    kienkon thích bài này.
  5. lyvinhr00m
    Offline
    lyvinhr00m   [1.234/930]
    uhm, test thử thì in ra: 22-13-13-13
    kienkon thích bài này.
  6. integer
    Offline
    integer   [1.695/1.313]
    Tại sao b = a + ++a;b = a++ + ++a; đều cho ra kết quả là 22 :s
  7. lucky_boy91
    Offline
    lucky_boy91   [8/1]
    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


    int a = 0;
    int r = (++a + -a );
    hỏi r bằng mấy
    hãy giải thích vì sao!
  8. Mr.H
    Offline
    Mr.H   [191/75]
    lâu rồi ko đụng cái này, hình như lỗi thì phải nhỉ @_@
  9. integer
    Offline
    integer   [1.695/1.313]
    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).
  10. lucky_boy91
    Offline
    lucky_boy91   [8/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!))