[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.
וואו, אני לא זוכר אם נתקלתי בזה בעבר. אם כן - אז שכחתי :-)
סגור על זה שזה אופטור?
יכול להיות שזה הערכה של הביטוי "x--" (מוריד 1 מ-x, ומחזיר את הערך שהתקבל), ואז הערכה של התוצאה עם הסימן ">"
כאילו התייחסות קודם ל-"--", ואז לסימן ההשוואה ">" - גם ככה אפשר לכתוב לולאות: while (x-- >10) { dosomething}
כן, זה לא באמת אופרטור כמו שחשב מי ששאל את השאלה ב-StackOverflow, אבל אתם חייבים להודות שזה באמת נראה כמו ה-Syntax של סי++.
דן צודק. זה בעצם שירשור של -- (חיסור אחד) ואז הערכה של סימן ה-גדול מ..