Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Nhập vào số nguyên a, sau đó cho hiển thị các b, c, d như sau:

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    2

    Red face Nhập vào số nguyên a, sau đó cho hiển thị các b, c, d như sau:

    Nhập vào số nguyên a, sau đó cho hiển thị các a, b, c, d như sau:
    b=a++ + ++a ; a+=a+=a; c=b*=a/=a; d=c-- + --c.
    Các bạn sửa lại giùm mình code này:

    #include<iostream.h>
    #include<conio.h>
    main() {
    int a, b, c, d;
    cout<<"a=";cin>>a;
    cout<<"\nb = ++"<<a<<" + "<<a<<"++ = ";
    b=++a + a++;
    cout<<b<<"\ta = "<<a;

    cout<<"\na = "<<a<<"+ = "<<a<<"+ = ";
    a+=a+=a;
    cout<<a<<"\ta+ = "<<a;

    cout<<"\nc = "<<b<<"* = "<<a<<"/ ="<<a;
    c=b*=a/=a;
    cout<<c<<"\tb* = "<<b<<"\ta/ = "<<a<<"\ta = "<<a;

    cout<<"\nd = --"<<c<<" + "<<c<<" -- = ";
    d=c-- + --c;
    cout<<d<<"\tc = "<<c;

    getch();
    }

    Hiển thị:


    Hiển thị ra số a mình thấy sai, a++ thì lên 1 đơn vị thôi đúng không, trong khi nó cộng trong ảnh là : 5++=7 ( sai)
    Giải thích giùm mình 3 dòng dưới ở trong hình ( b*, a/ ...)

  2. #2
    Ngày gia nhập
    01 2011
    Bài viết
    42

    Code:
    b=++a + a++;
    theo code trên thì a++ 2 lần là thành 7 đúng rồi

  3. #3
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    b=++a + a++
    thứ tự thực hiện của nó như sau:
    a=5;
    đầu tiên sẽ +1 vào a->a=6;
    b=6+6=12;
    a=a+1;
    a=7;
    I'll come back

  4. #4
    Ngày gia nhập
    07 2009
    Bài viết
    4

    Đầu tiên phải phân biệt giữa ++a và a++, cả 2 đều là thêm 1 vào a, nhưng nếu đưa vào trong biểu thức thì sẽ có sự khác nhau:
    b = a++ ~> b = a, sau đó a mới thêm 1.
    b = ++a~> a = a+1, sau đó gán giá trị mới này cho b.

    Như vậy, trong câu lệnh: b = ++a + a++
    Đầu tiên, với câu lệnh ++a, a được gán thêm 1. Lúc này a = 6
    Sau đó: b = ++a + a++, b sẽ được gán giá trị 6+6, rồi a mới được thêm 1.

    Do vậy kết quả cuối cùng sẽ là b = 12 và a = 7.

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    b=++a + a++
    thứ tự thực hiện của nó như sau:
    a=5;
    đầu tiên sẽ +1 vào a->a=6;
    b=6+6=12;
    a=a+1;
    a=7;
    Đây là 1 vấn đề lý thú. Theo C/C++ thì tất cả các câu lệnh sau đều KHÔNG HỢP LỆ:
    b=a++ + ++a;
    a+=a+=a;
    d=c-- + --c.


    Và kết quả của nó có thể là bất kỳ cái gì: Compiler báo lỗi không chịu dịch / ra 1 số trên trời dưới biển nào đó. Đồng thời không có cơ sở nào để khẳng định thứ tự thực hiện trong mỗi câu lệnh là thế nào cả, trừ khi đang nói đến 1 compiler cụ thể nào đó.

    The order in which operands in an expression are evaluated is unspecified in C++. The only guarantee is that they will all be completely evaluated at the next sequence point.
    Các bạn có thể search "sequence point" để hiểu rõ lệnh nào được phép, lệnh nào không được. Hoặc tham khảo vài link sau đây
    http://c-faq.com/expr/seqpoints.html
    http://en.wikipedia.org/wiki/Sequence_point
    https://www.securecoding.cert.org/co...equence+points


    Và vì kết quả hoàn toàn có thể là compiler báo lỗi, nên nếu môn học là "lập trình C" hoặc "lập trình C++" thì đề bài này không phải là 1 đề bài hợp cách. Nếu tên môn học là "Lập trình Borland C" chẳng hạn thì tạm chấp nhận được, nhưng ra đề bài yêu cầu thực hiện những câu lệnh không hợp lệ cũng không phải là 1 ý tưởng hay.

  6. #6
    Ngày gia nhập
    08 2011
    Bài viết
    2

    Mặc định Nhập vào số nguyên a, sau đó cho hiển thị các b, c, d như sau:

    Cảm ơn mọi người đã giúp , mình đã hiểu dòng đầu, còn 3 dòng sau, giải thích 1 tí nửa dc không?? Hiện tại mình đang dùng Dev C++ ( cái này dùng tốt không,máy đứa bạn nói dùng cái này thay cho borland C++)

Các đề tài tương tự

  1. Bài tập C giải thuật nhập vào số nguyên n in ra n số nguyên tố đầu tiên?
    Gửi bởi LTC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 48
    Bài viết cuối: 25-04-2013, 07:40 PM
  2. Tối ưu Code nhập số nguyên dương rồi đảo ngược số nguyên dương vừa nhập trong C
    Gửi bởi tyrant trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 10
    Bài viết cuối: 07-10-2012, 11:07 PM
  3. Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên.
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-06-2011, 01:05 PM
  4. Game Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  5. Trả lời: 16
    Bài viết cuối: 16-07-2010, 06:44 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn