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

نام تاپیک: خروجی قطعه کد زیر چیست؟

  1. #1
    کاربر جدید آواتار ms.nazeri
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    |___|
    پست
    24

    خروجی قطعه کد زیر چیست؟

    خروجی قطعه کد زیر چیست؟چرا؟
    و لطفا توضیح بدین که خط 3و 4 چه مقادیری به خود میگیره؟

    {
    char str[4];
    int a=1;
    for (int i=0;i<0x4;i++) str[i]=i;
    a=*((int*)&str[1]); a++;
    cout<<a;
    }

  2. #2
    کاربر دائمی آواتار shahmohammadi
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    کلیبر
    پست
    475

    نقل قول: خروجی قطعه کد زیر چیست؟

    با سلام.
    برنامه ی نکته داریه. برای درک بهتره خروجیش دستور خروجی رو به این صورت بنویسین:
    cout<<hex<<a;

    اینطوری هر دوتا رقم از راست به چپ یه بایت رو نشون می دن.

    str[1] یه متغیر از نوع کاراکتره. &str[1] آدرس این متغیر رو نشون می ده منتها آدرسی که از نوع char * هست. پس با (int*) تبدیل صریحش می کنیم به آدرسی به یک متغیر اینتجر. حالا اون ستاره آخری هم برای دسترسی به محتویات این اشاره گر ساختگی اینتجر هست. که مقدار صحیح ساختگی رو به متغیر a میده. این کد مقدار دوبایت از اون آدرس رو در متغیر آ قرار می ده.
    با توجه به اینکه:
    str[1]==1;str[2]==2;

    و این دوتا بایت دو بایت از آ هستند پس a برابر است با 0201 البته در مبنای هگزا.
    نکته ای که داره اینجاست که اعداد در کامپیوتر و خصوصا در زبان سی بایت هاشون معکوس ذخیره می شه.
    موفق باشین.

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

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