פורסם 2006 בינואר 419 שנים לא זה לא ככה, אבל היית קרוב. יש משתנה שהוא רק שלילי: signed int x; ויש משתנה שהוא רק חיובי: unsigned int x; אפשר גם לקמבן עם long, short וכ'ו...
פורסם 2006 בינואר 419 שנים עד כמה שאני זוכר, לפחות מפסקל, un signed זה פשוט המשתנה הרגיל(int למשל) עם תווך ערכים של ממינוס 65535 ועד פלוס 65536, כאשר signed זה רק פלוס אבל מגיע לערך 131072.
פורסם 2006 בינואר 419 שנים לגבי unsigned אני בטוח, עוד כמה דקות אעשה ניסוי לגבי signed.עריכה:חזרתי עם תוצאות:[attachment deleted by admin]
פורסם 2006 בינואר 419 שנים אוקיי אז התבלבלתיזה פשוט הפוךunsigned זה מ-0 עד 131072ו-signed זה ממינוס 65535 ועד פלוס 65536
פורסם 2006 בינואר 419 שנים כאשר אתה מגדיר משתנה מספרי מסוג INTEGER למשל, אתה יכול להגיד לקומפיילר, האם בנוסף לערך המספר הוא ישמור את הסימן שלו או לא.אם הוא שומר את הסימן (חיובי/שלילי), אזי הקומפיילר מבזבז ביט אחד מתוך הזכרון שהמשתנה נשמר בו לצרכי הסימן, ובכל הוא מוריד לך בחזקה של 2 את טווח המספרים האפשרים.בד"כ ברגיל, המשתנים הם ישר SIGNED אלה אם אתה מפורשות אומר לו שאתה רוצה שהם יהיו UNSIGNED.טווח הערכים הספציפי תלוי במימוש הקומפילר/מעבד של המחשב, ככה שכמו שנאמר פה, למשל, אם משתנה מסוג INTEGER לוקח 16 ביטים במימוש מסויים, אזSIGNED INTEGER = 15 BIT FOR NUMBER + 1 BIT FOR SIGNמשמע טווח הערכים הוא בין -32768 ל 32768. (שזה הרגיל). לעומת זאת אם אתה מגדיר UNSIGNED אזUNSIGNED INTEGER = 16 BIT FOR NUMBERמשמע טווח ערכים בין 0 ל 65536.כמובן שאם תתן למשתנה UNSIGNED INT מספר שלילי, הוא ישים אותו במקום ההוא בזכרון, אבל כשתקרא אותו הוא יראה שונה בגלל הייצוג.
פורסם 2006 בינואר 419 שנים עוד כמה הערות:1. כברירת מחדל, int הוא תמיד signed. כלומר, להגדיר:int x;ולהגדירsigned int x;זה אותו דבר.2. אם תשים ערך שלילי מפורש במספר unsigned, הקומפיילר יזהיר אותך מפני זה.3. אפשר להגדיר גם signed/unsigned char (שקובע אם הטווח יהיה 0-255 או מינוס 128 עד 127).אבל, בניגוד ל-int, אם לא רושמים signed/unsigned הקומפיילר לא מחוייב שה-char יהיה אחד מהם. כלומר, כל קומפיילר יתנהג אחרת.
פורסם 2006 בינואר 519 שנים בערך...מבחינת הקומפיילר, char, בדיוק כמו int, הוא מספר, רק שהוא מכיל רק 8 ביט (ולא 16 או 32), ולכן מכיל ערכים מ-0 עד 255 (אם הוא unsigned) או ממינוס 128 עד 127 (אם הוא signed).אבל, ל-char יש כמה שימושים מיוחדים:כל תו בין גרשיים (לדוגמה 'a' או '1') הוא קבוע מסוג char, שהמספר שהוא מייצג הוא לפי ייצוג ה-ASCII.כל סדרה של תווים בין גרשיים (לדוגמה "hello world") הוא קבוע מסוג char*, כלומר מערך של תווים.וחוץ מזה, פונקציות מסוימות מתייחסות ל-char כאות - כל הפונקציות שמתייחסות למחרוזות (פונקציות הדפסה לדוגמה).כמובן, לקומפיילר לא ממש איכפת אם הערך של 'א' הוא 208 או 48-, כי הייצוג הביטי שלהם הוא אותו דבר.בגלל זה אין התחייסות לגבי זה ש-char יהיה signed או unsigned.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.