C (שפת תכנות): מה ההבדל בין: ++ a ו- a = a + 1?


תשובה 1:

אין הבדל. ++ a, a + = 1 ו- a = a + 1 הם ביטויים זהים לחלוטין, בהגדרה (כלומר, מפרט השפה מגדיר אותם כך).

בשלושת המקרים, התוצאה של הביטוי היא עותק של הערך שהוא יכתוב ל- "a" (a ++ שונה כמובן בכך שהתוצאה היא העתק של הערך שהוא קרא מ- "a")

ההבדל היחיד הוא שאם "a" הוא ביטוי מסובך יותר, כמו קריאת פונקציה, הוא ייקרא פעמיים ב "a = a + 1", והקדימות של התביעה נמוכה בהרבה מזו של ++, כך ששימוש הקצאה במקום ++ לפעמים דורשת סוגריים נוספים: ++ a + ++ b פשוט יותר לכתוב מאשר (a + = 1) + (b + = 1) או (a = a + 1) + (b = b + 1)


תשובה 2:

++ a ו- 1 + דומה זהה אך הבעיה מתרחשת כאשר השתמשת ביותר ממשתנה אחד.

דוגמא:

int a = 10, b;

++ a => מעלה את הערך a אחד (o / p: a = 11)

a ++ => מגדיל את הערך a אחד (o / p: a = 11))

b = a ++ => הקצה תחילה את הערך a ל a ואז גדל על ידי 0ne (o / p: a = 11, b = 10)

b = ++ a => הערך הראשון a מוגדל על ידי אחד ואז מוקצה ל b (o / p: a = 11, b = 11)


תשובה 3:

++ a ו- 1 + דומה זהה אך הבעיה מתרחשת כאשר השתמשת ביותר ממשתנה אחד.

דוגמא:

int a = 10, b;

++ a => מעלה את הערך a אחד (o / p: a = 11)

a ++ => מגדיל את הערך a אחד (o / p: a = 11))

b = a ++ => הקצה תחילה את הערך a ל a ואז גדל על ידי 0ne (o / p: a = 11, b = 10)

b = ++ a => הערך הראשון a מוגדל על ידי אחד ואז מוקצה ל b (o / p: a = 11, b = 11)


תשובה 4:

++ a ו- 1 + דומה זהה אך הבעיה מתרחשת כאשר השתמשת ביותר ממשתנה אחד.

דוגמא:

int a = 10, b;

++ a => מעלה את הערך a אחד (o / p: a = 11)

a ++ => מגדיל את הערך a אחד (o / p: a = 11))

b = a ++ => הקצה תחילה את הערך a ל a ואז גדל על ידי 0ne (o / p: a = 11, b = 10)

b = ++ a => הערך הראשון a מוגדל על ידי אחד ואז מוקצה ל b (o / p: a = 11, b = 11)


תשובה 5:

++ a ו- 1 + דומה זהה אך הבעיה מתרחשת כאשר השתמשת ביותר ממשתנה אחד.

דוגמא:

int a = 10, b;

++ a => מעלה את הערך a אחד (o / p: a = 11)

a ++ => מגדיל את הערך a אחד (o / p: a = 11))

b = a ++ => הקצה תחילה את הערך a ל a ואז גדל על ידי 0ne (o / p: a = 11, b = 10)

b = ++ a => הערך הראשון a מוגדל על ידי אחד ואז מוקצה ל b (o / p: a = 11, b = 11)