פורסם 2010 ביולי 2515 שנים שאלה כביכול מתחילנית, אבל האמת אף פעם לא נגעתי בעניין... יצא לי להיתקל בכמה תוכניות עם הביטוי נניח:if (a){...}הכוונה שזה שקול ל-if(a!=0){...}??רק רציתי לוודא....תודה !
פורסם 2010 ביולי 2515 שנים אני לא יודע באיזו שפות אז בקיצור זה אומר ש:1. a שווה לtrue [כאשר הוא מסוג bool]2. [וזה כבר תלוי בשפה] שa הוא בעל ערך שאינו 0, null, או '' (סטרינג ריק)
פורסם 2010 ביולי 2515 שנים ב-C זה אכן שקול.אגב, בתקן הישן של C בכלל אין כזה דבר bool - כל בוליאן הוא למעשה int, ובקומפיילרים ישנים בכלל לא היה קיים הטיפוס הזה (בשביל להחזיר true/false היית מחזיר 1/0). כשאתה עושה if על מספר כלשהו, אז הקוד יתבצע אם ורק אם המספר שונה מ-0 (כשזה מתורגם לבוליאנים, אז זה בדיוק אומר שהקוד יתבצע רק אם ערך הביטוי הוא true).הפעולה =! היא פעולה שהתוצאה שלה היא מספר - אם שני האופרנדים שווים היא מחזירה 0, אחרת היא מחזירה מספר שאינו 0 (בד"כ 1, אבל לא בהכרח).
פורסם 2010 ביולי 2515 שנים מחבר ב-C זה אכן שקול.אהה סבבה...לגבי bool: זה קיים רק ב-C++ כי ב-C לא קיים param. type כזה...אפשר כמובן להגדיר כ-enum איזה homemade bool אבל אין משהו פורמלי בשפה למיטב ידעתי לפחות...הפעולה =! היא פעולה שהתוצאה שלה היא מספר - אם שני האופרנדים שווים היא מחזירה 0, אחרת היא מחזירה מספר שאינו 0 (בד"כ 1, אבל לא בהכרח).לא כ"כ הבנתי... מה הכוונה מחזירה ערך ? הכוונה החזרת ערך לקומפיילר לצורך קביעה איך הוא ימשיך בתנאי שב-source code?
פורסם 2010 ביולי 2515 שנים לגבי bool: זה קיים רק ב-C++ כי ב-C לא קיים param. type כזה...אפשר כמובן להגדיר כ-enum איזה homemade bool אבל אין משהו פורמלי בשפה למיטב ידעתי לפחות...שוב, תלוי לפי איזה תקן. ב-C90 (שהוא התקן הנפוץ שמלמדים) אין טיפוס bool, אבל רוב הקומפיילרים עדיין תומכים בו (זה פשוט typedef ל-int). בתקן C99 היותר חדש יש גם טיפוס בוליאני.לא כ"כ הבנתי... מה הכוונה מחזירה ערך ? הכוונה החזרת ערך לקומפיילר לצורך קביעה איך הוא ימשיך בתנאי שב-source code?הכוונה ב"מחזירה" היא שזהו ערך הביטוי. לומר ש-"+" מחזירה את הסכום של שני מספרים אומר שערך הביטוי a+b הוא הסכום של שני המספרים. אז לומר ש-"=!" מחזירה משהו, זה כמו לומר שערך הביטוי a!=b הוא אותו משהו.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.