תנאי if ב- ansi C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תנאי if ב- ansi C


iem

Recommended Posts

שאלה כביכול מתחילנית, אבל האמת אף פעם לא נגעתי בעניין... יצא לי להיתקל בכמה תוכניות עם הביטוי נניח:


if (a)
{

.
.
.
}

הכוונה שזה שקול ל-


if(a!=0)
{

.
.
.
}

??

רק רציתי לוודא....

תודה !

קישור לתוכן
שתף באתרים אחרים

ב-C זה אכן שקול.

אגב, בתקן הישן של C בכלל אין כזה דבר bool - כל בוליאן הוא למעשה int, ובקומפיילרים ישנים בכלל לא היה קיים הטיפוס הזה (בשביל להחזיר true/false היית מחזיר 1/0). כשאתה עושה if על מספר כלשהו, אז הקוד יתבצע אם ורק אם המספר שונה מ-0 (כשזה מתורגם לבוליאנים, אז זה בדיוק אומר שהקוד יתבצע רק אם ערך הביטוי הוא true).

הפעולה =! היא פעולה שהתוצאה שלה היא מספר - אם שני האופרנדים שווים היא מחזירה 0, אחרת היא מחזירה מספר שאינו 0 (בד"כ 1, אבל לא בהכרח).

קישור לתוכן
שתף באתרים אחרים

ב-C זה אכן שקול.

אהה סבבה...

לגבי bool: זה קיים רק ב-C++ כי ב-C לא קיים param. type כזה...

אפשר כמובן להגדיר כ-enum איזה homemade bool אבל אין משהו פורמלי בשפה למיטב ידעתי לפחות...

הפעולה =! היא פעולה שהתוצאה שלה היא מספר - אם שני האופרנדים שווים היא מחזירה 0, אחרת היא מחזירה מספר שאינו 0 (בד"כ 1, אבל לא בהכרח).

לא כ"כ הבנתי... מה הכוונה מחזירה ערך ? הכוונה החזרת ערך לקומפיילר לצורך קביעה איך הוא ימשיך בתנאי שב-source code?

קישור לתוכן
שתף באתרים אחרים

לגבי bool: זה קיים רק ב-C++ כי ב-C לא קיים param. type כזה...

אפשר כמובן להגדיר כ-enum איזה homemade bool אבל אין משהו פורמלי בשפה למיטב ידעתי לפחות...

שוב, תלוי לפי איזה תקן. ב-C90 (שהוא התקן הנפוץ שמלמדים) אין טיפוס bool, אבל רוב הקומפיילרים עדיין תומכים בו (זה פשוט typedef ל-int). בתקן C99 היותר חדש יש גם טיפוס בוליאני.

לא כ"כ הבנתי... מה הכוונה מחזירה ערך ? הכוונה החזרת ערך לקומפיילר לצורך קביעה איך הוא ימשיך בתנאי שב-source code?

הכוונה ב"מחזירה" היא שזהו ערך הביטוי. לומר ש-"+" מחזירה את הסכום של שני מספרים אומר שערך הביטוי a+b הוא הסכום של שני המספרים. אז לומר ש-"=!" מחזירה משהו, זה כמו לומר שערך הביטוי a!=b הוא אותו משהו.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...