
04-05-2008, 16:53
|
 |
|
|
חבר מתאריך: 08.10.02
הודעות: 827
|
|
ובנוסף יש להכיר פעולה נוספת של הפסיק.
כאשר יש פסיק שהוא לא בסוגריים של הפוקנציה, הגדרת משתנים וכל אלה אז הפסיק גורם לכך שהאופרנד משמאלו יתבצע(יוערך) וההחזר יושלך. ואז האופרנד מימינו יתבצע ויחזיר את הערך והסוג שהוא מחזיר.
הקלט של הדוגמא הבאה תהיה
Hello World
sup
מה שמראה שסדר הפעולת יתבצע משמאל לימין וההחזר של כל הביטוי של הסוגריים יהיה ההחזר של הביטוי האחרון במקרה הזה char * המצביע למילה sup
קוד:
char *abcc() { return "sup"; }
int main(int argc, char* argv[])
{
char *x;
x = (printf("Hello") , printf(" World\n"), abcc());
printf("%s\n", x);
return 0;
}
}
אם תנסה לשנות את x לint לדוגמא תקבל את השגיאה הבאה:
error C2440: '=' : cannot convert from 'char *' to 'int *'
המראה בדיוק מה הביטוי מחזיר (char *).
יש גם לשים לב שחובה סוגריים מסביב לביטוים המופרדים על ידי פסיק,
לולא הסוגריים הפסיק מתפרש לא כאופרטור אלא במפריד בין ביטויים
לדוגמא אם נשנה את התוכנית שהבאת ל:
קוד:
int x,y,z;
x = y = 4 ,z=5;
printf("%d\n",x);
הפלט הוא ארבע שזה בדיוק שווה לזה:
קוד:
int x,y,z;
(x = y = 4 ,z=5);
printf("%d\n",x);
ולכן זה על פי אותם כללים שציינתי קודם, X=Y=4 מתבצע ראשון ואז Z=5 אשר מחזיר 5 בהחזר כל הביטוי.
_____________________________________
Error: Keyboard not found
Press F1 to continue
|