اپراتور “<--" در زبان ++C به چه معناست؟

  • آخرین بروزرسانی پرسش در کاپ کد در پنج‌شنبه 26 مارس 2020

بعد از خوندن Hidden Features and Dark Corners of C++/STL در comp.lang.c++.moderated از کامپایل شدن و کار کردن کد زیر توی Visual Studio 2008 و G++ 4.4 کاملا متعجب شدم.

کد به این صورت هست:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}

خروجی:

9 8 7 6 5 4 3 2 1 0

من فکر می کردم این به زبان C هست، چرا که توی GCC هم کار می کنه. توی استاندارد این اپراتور کجا تعریف شده و از کجا اومده؟

پرسش 🔝امتیازی
تعداد بازدید773915
امتیاز8790👍
رای8983👍
📅 پرسش در
📅 آخرین ویرایش

برای این پرسش 4 پاسخ وجود دارد

4

--> اپراتور نیست. در واقع این تشکیل شده از دو اپراتور جداگانه -- و > هست.

کد شرطی مقدار x  رو کاهش میده در حالی که مقدار اصلی x (کاهش نیافته) رو بر میگردونه و بعد مقدار اصلی رو با استفاده از اپراتور>با 0 مقایسه می کنه.

برای درک بهتر، این عبارت میتونه به شکل زیر نوشته بشه:

while( (x--) > 0 )

امتیاز8453👍

پاسخ تایید شده
📅 پاسخ در
📅 آخرین ویرایش

این عبارت برابره با

while (x-- > 0)

x-- (پس کاهش) iکه برابر هست با  x = x-1 بنابراین, کد تبدیل میشه به:

while(x > 0) {
    x = x-1;
    // logic
}

امتیاز1262👍

📅 پاسخ در
📅 آخرین ویرایش

اینجوریه

#include <stdio.h>
int main(void){
     int x = 10;

     while( x-- > 0 ){ // x goes to 0

       printf("%d ", x);
     }

     return 0;
}

فقط یک فضای خالی باعث میشه تا شکلش جالب تر بشه, --  کاهش میده و > مقایسه میکنه.

امتیاز540👍

📅 پاسخ در
📅 آخرین ویرایش
while( x-- > 0 )

این شکلی تجزیه میشه.

امتیاز358👍

📅 پاسخ در
📅 آخرین ویرایش
برای دنبال کردن نوشته های کاپ کد به کانال تلگرامی آن (cupcode_ir@) بپیوندید!
guest
0 دیدگاه ها
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
0
افکار شما را دوست داریم، لطفا نظر دهید.x