האופרטור החדש "Goes to" של C++

[17 בנובמבר 2009] [3 תגובות]

StackOverflow הוא אתר מדהים למציאת תשובות לשאלות תכנות. לפעמים אפשר למצוא בו גם יהלומים אמיתיים מעבר לשאלות עצמן.

שימו לב לקטע הקוד הבא:

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

הקוד מאתחל את הערך של x ל-10 ולאחר מכן בלולאה "הולך ל" 0. כלומר, x קטן באחד עד שהערך שלו מגיע ל-0.

מה שמוזר הוא השימוש באופרטור Goes to. כלומר "x הולך לאפס":

-->

זאת בהחלט הפעם הראשונה שאני נתקלתי באופרטור הזה. תנסו להדר ולהריץ את הקוד - זה פשוט עובד.

האופרטור הזה הוא לא חלק מהסטנדרט של שפת C או של C++ אז למה זה עובד?

מי שיודע, כל הכבוד. מי שלא, מוזמן לקרוא את התשובה בפנינה הזאת ב-StackOverflow.

אם אהבת את הפוסט, אני שולח מדי פעם למייל עוד פוסטים מעניינים שלא תמיד מגיעים להתפרסם באתר. אתה מוזמן להצטרף לרשימה:
(אני שונא ספאם. אני מבטיח לעולם לא לשלוח משהו לא מעניין)

3 תגובות

  1. המנכ"ל | 11/18/2009 6:02:49 PM

    וואו, אני לא זוכר אם נתקלתי בזה בעבר. אם כן - אז שכחתי :-) 

  2. דן | 11/18/2009 7:18:57 PM

    סגור על זה שזה אופטור?

     יכול להיות שזה הערכה של הביטוי "x--" (מוריד 1 מ-x, ומחזיר את הערך שהתקבל), ואז הערכה של התוצאה עם הסימן ">"

    כאילו התייחסות קודם ל-"--", ואז לסימן ההשוואה ">" - גם ככה אפשר לכתוב לולאות: while (x-- >10) { dosomething}

     

  3. טל | 11/20/2009 2:51:10 AM

    כן, זה לא באמת אופרטור כמו שחשב מי ששאל את השאלה ב-StackOverflow, אבל אתם חייבים להודות שזה באמת נראה כמו ה-Syntax של סי++.

    דן צודק. זה בעצם שירשור של -- (חיסור אחד) ואז הערכה של סימן ה-גדול מ..

התגובות נעולות