28-11-2012, 20:24
|
|
|
חבר מתאריך: 12.12.06
הודעות: 72
|
|
עזרה בתרגיל - מתחיל ב-C
שלום,
1. יש לי את קטע הקוד הבא:
קוד PHP:
int x=3,y=15;
z = x & y;
printf("%d", z);
אני לא מבין למה שאני מדפיס בPRINTF את התא Z הוא מדפיס לי 3, הרי הוא היה צריך להדפיס 1, מכיוון שמשמאל לימין: התוצאה של X=3 שונה מ-0 ואז זה 1 וגם Y=15 ושונה מ-0 ואז זה גם 1 (TRUE).
1 ו-1 זה 1, לא??
2. יש לי את הקוד הבא:
קוד PHP:
x = 1;
y = 0;
z = x && !y || !x && y;
x = z;
z = x && !y && !x && y;
printf("%d",z);
אני לא מבין למה התוצאה בPRINTF יוצא במחשב 0, הרי צריך להיות 1? בגלל ש:
משמאל לימין: 0&&1! && 0!&&1 =z
אז מסיקים ש: 0!&&1 = 1 (TRUE)
0&&1! = 1 (TRUE)
ואז TRUE) Z=1)
3. יש לי את הקוד:
קוד PHP:
int a = 9;
char c='a';
c = (char ) a ;
a *= c - 60 ;
printf ("a: %d\n", a);
א. אני לא מבין איך בשורה האחת לפני אחרונה בתא a מחשב את הערך הASCII של התו c ואז מחסר ב-60? הרי a הוא תו ומתי שפת C יודעת לחסר מתווים, נגיד C-B=A ומתי יודעת להתייחס לזה כאל ערך ASCII ואז לעשות חיסור במספרים?
ב. השורה c = (char ) a אומרת שמקבלת מספר שלם a וממירה בASCII לתו, ומה קורה אם הa הוא תו, אז זה יוצא שגיאה?
תודה.
|