Toán tử ++ trong C

Thảo luận trong 'C/C++' bắt đầu bởi integer, 19 Tháng năm 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Đ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. Offline

    xuanducit

    • Windows 3.0

    Số bài viết:
    60
    Đã được thích:
    37
    Điểm thành tích:
    40
    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. Offline

    lyvinhr00m

    • cụ lý

    Số bài viết:
    1.234
    Đã được thích:
    930
    Điểm thành tích:
    900
    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. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    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. Offline

    lyvinhr00m

    • cụ lý

    Số bài viết:
    1.234
    Đã được thích:
    930
    Điểm thành tích:
    900
    uhm, test thử thì in ra: 22-13-13-13
    kienkon thích bài này.
  6. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Tại sao b = a + ++a;b = a++ + ++a; đều cho ra kết quả là 22 :s
  7. Offline

    lucky_boy91

    • Thành Viên Mới

    Số bài viết:
    8
    Đã được thích:
    1
    Điểm thành tích:
    0
    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. Offline

    Mr.H

    • Thành Viên Mới

    Số bài viết:
    191
    Đã được thích:
    75
    Điểm thành tích:
    0
    lâu rồi ko đụng cái này, hình như lỗi thì phải nhỉ @_@
  9. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    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. Offline

    lucky_boy91

    • Thành Viên Mới

    Số bài viết:
    8
    Đã được thích:
    1
    Điểm thành tích:
    0
    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!))

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí