نمایش نتایج 1 تا 2 از 2

نام تاپیک: خروجی برنامه ی C++‎

  1. #1

    Question خروجی برنامه ی C++‎

    سلام.
    یک سوال داشتم .
    به نظر من خروجی این برنامه 11 باید باشه :

    #include <iostream>
    using namespace std; class A { public: A() { a.a = a.b = 1; } struct { int a, b; } a; int b(void); }; int A::b(void) { int x = a.a; a.a = a.b; a.b = x; return x; }; int main(void) {
    A a; a.a.a = 0; a.b(); cout << a.b()<< a.a.b << endl;
    system("pause");
    return 0;
    }


    اما خروجی واقعیش 10 هست ! چرا میگه تو a.a.b صفر هست ؟
    حالا اگر به جای این دستور :

    cout << a.b()<< a.a.b << endl;

    این دستور رو بنویسیم :

    cout << a.b();cout << a.a.b << endl;

    خروجی برنامه 11 میشه . میشه راهنمایی کنید چرا اینجوریه ؟
    ممنون .

  2. #2

    نقل قول: خروجی برنامه ی C++‎


    #include <iostream>
    using namespace std;
    class A {
    public:
    A() {
    a.a = a.b = 1;
    }
    struct {
    int a, b;
    } a;
    int b(void);
    };

    int A::b(void) {
    int x = a.a;
    cout << "x: -> " << x << endl;
    a.a = a.b;
    cout << "a.a -> " <<a.a << endl;
    a.b = x;
    cout << "a.b: -> " << a.b << endl;
    cout << "x: -> " << x << endl;
    return x;
    };

    int main(void) {
    A a;
    a.a.a = 0;
    a.b();
    cout << "---------------" << endl;
    //because cout right to left evaluate object to print
    //cout << "a.b() -> " << a.b() << "a.a.b -> " << a.a.b <<endl;

    cout << "---------------" << endl;
    cout << a.b()<< endl;
    //because a.b() set the new value in to a.a.b print the last value
    cout << a.a.b << endl;
    //system("pause");
    return 0;
    }

    البته من کد شما را اینطوری ویرایش کردم که واضحتر بشه!
    ولی در هر حال به علت اینکه دستور های outstream از راست به چپ ارزیابی می شوند بنابراین در خط اول آخرین مقدار a.a.b برابر با صفر هست و بعد از نمایش این مقدار تابع ()a.b صدا زده می شود. ولی در دو خط پایین شما دوتا دستور outstream استفاده کرده اید بنابراین آخرین تغییری که تابع ()a.b بر روی a.a.b ایجاد کرده است 1 هست و به همین علت outstream دوم هم عدد 1 را نشان میدهد.

تاپیک های مشابه

  1. خروجی برنامه یک برنامه بازگشتی
    نوشته شده توسط lvenoos در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 3
    آخرین پست: چهارشنبه 16 آبان 1386, 14:24 عصر
  2. Customize کردن فایل های خروجی برنامه
    نوشته شده توسط Amir Taghavi در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 12 اردیبهشت 1385, 23:11 عصر
  3. نمایش خروجی برنامه windows based تحت وب
    نوشته شده توسط a_askari در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 06 مهر 1384, 17:10 عصر
  4. بدونه استفاده از فایلها برنامه ای می خواهم که خروجی برنامه
    نوشته شده توسط Amir63 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: دوشنبه 04 خرداد 1383, 19:50 عصر
  5. مشاهده ورودی و خروجی برنامه تحت DOS در یک برنامه تحت ویندوز
    نوشته شده توسط ravanfar در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: یک شنبه 20 اردیبهشت 1383, 06:56 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •