עבור לתוכן

אני ממש מתחיל בC ויש לי 2 שאלות !

Featured Replies

פורסם

טוב אז אני רק התחלתי C ויש לי קצת בסיס מפסקל אבל עדיין יש דברים שלא מובנים לי

א) מה ההבדל בין void main() ל int main (void) ?

הסוגריים הם אחרי הכתב כמובן פשוט כאן זה יוצא ככה

ב) איך אני עושה חיבור משתנים ב printf ?

יעני יש לי משתנה A ומשתנה B ואני רוצה לחבר אותם (בתור פעולת חשבון כמו 2+3) ובלי לבצע השמה במשתנה אחר C לדוגמא... (אם זה אפשרי)

אההה... וד"א אני משתמש בקומפיילר של בורלנד

פורסם

1) האחד מחזיר INT(בדרך כלל ערך שמצביע על סיבת היציאה מהתוכנית - אם ע"י שגיאה או יציאה תיקנית) והשני לא מחזיר ערך.

2)printf("%d", a+b);

פורסם

התקן אומר שהצורה היחידה היא int main(void) מכיוון שזה חוזר בסוף למערכת ההפעלה והיא צריכה לעשות עם זה דברים (למרות שאם אתה לא מחזיר כלום, הקומפיילרים נראה לי ישר שמים 0).

פורסם

לפי התקן של C מותר ל-main להחזיר void, הוא פשוט דואג תמיד להחזיר 0 במקרה זה.

ב-C++, פונקצית ה-main חייבת להחזיר int (למרות שיש קומפיילרים שלא מחייבים).

פורסם

בדיוק ההפך

התקן של C שנקרא ANSI-C מחייב את main להחזיר int. נסה לקמפל בקומפיילר אמיתי של C (כמו gcc ביוניקס) ולא תצליח לקמפל עם void

ב-C++ ה-main יכול לא להחזיר כלום כלומר void

פורסם

בדיוק מה שבאתי להראות:

blah.c: In function `main':

blah.c:2: warning: return type of 'main' is not `int'

כפי שאמרתי אפשר לקמפל, אולי עם pedantic ו ansi אולי אי אפשר :)

פורסם

ואללה.

טעות שלי :)

טוב נו, זכרתי שבאחד מותר ובאחר אסור.

פורסם

זה די פשוט

כל מה שאפשר לעשות ב-C אפשר לעשות ב-C++

פורסם
  • מחבר

טוב תודה רבה לכולם על התשובות :)

פורסם

ההגדרה הסטנדרטית של main היא

int main(int argc, char *argv[])

argc הוא מספר הפרמטרים שסביבת ההרצה מעבירה ו- argv זה מערך של הפרמטרים עצמם.

רוב הקומפיילרים מאפשרים להשמיט אותם.

פורסם

זה קשור לתקשורת של התוכנית עם מערכת ההפעלה אשר מעבירה לה את הפרמרטים (גם כשאתם לא נותנים, עדיין argv[0] מכיל את שם התהליך) ומצפה ל int בשביל לדעת את ערך החזרה (0 יציאה תקינה, אחרת שגיאה).

פורסם

קצת סדר בבלאגן.

תלוי במערכת ההפעלה ובקומפיילר, שימוש ב-void main יכול לגרום ל:

1) שגיאת linkage

2) תקלות מוזרות

3) שום דבר

4) warning

גם ב-C וגם ב-C++ הפונקציה main חייבת להחזיר int. כל דבר אחר הוא פשוט לא נכון, גם אם הוא עובד לכם היום עם הקומפיילר שלכם ומערכת ההפעלה שלכם.

http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3

ארכיון

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

דיונים חדשים