למה?

pitriyot

New member
למה?

Y = 1; Y += (Y = 0 ? 5 : 2);​
למה ערכו של Y לאחר הרצת הקוד הוא 4??
 

gmorphus

New member
כי

כמה דברים: א. זה לא נכון לעשות כאלה דברים. אני מניח שלפי התקן ההתנהגות הזו לא מוגדרת. ב. בכל מקרה, לפי ההגיון שלי זה מה שקורה: הביטוי שנמצא בתוך הסוגריים שם את הערך 2 בY. זה אני מניח שאתה מבין. מכיוון שהערך 2 הושם, הוא גם הערך שמוחזר מהביטוי בסוגריים ומתווסף לY שעכשיו שווה 2. לא הגיוני?
 

GLev

New member
זה טעות...

Y=0 זה לא תנאי לוגי, על מנת שזה יהיה נכון צריך לכתוב בתנאי Y==0
 

alex11m

New member
התנאי הלוגי הוא לא Y=0 אלא

0 ו-0 מיצג בC פסוק שקר לכה נקבל:
y+=(y=2)​
לכן נקבל
y = y+2 = 2+2 = 4​
 

GPhoenixX

New member
נחמד :O

לא ידעתי ש(y=2) "מחזיר" 2, חשבתי שזה "מחזיר" true או משהו :|
 

oketz1

New member
לעומת זאת (y==2) מחזיר True

נראה לי שהתבלבלת וכתבת y=2 ואז למעשה אתה מבצע השמה
 
למעלה