מה ההבדל בין "a" ו- "a" ובין "3" ל- "3" בשפת התכנות C?


תשובה 1:

כל מה שנמצא בין "" נחשב למחרוזת (מערך של תווים), ואילו כל דבר שנמצא '' נחשב לדמות יחידה.

בכל פעם שאתה משתמש "", תו null ('\ 0') מוכנס בסוף המחרוזת כדי לסמן את סוף המחרוזת. אתה יכול גם לגשת לכל תו במחרוזת ממש כמו אלמנט במערך דרך האינדקס שלו.

אם אתה מתמודד עם דמות יחידה אתה צריך להשתמש בציטוטים בודדים, אם אתה מתמודד עם מיתרים השתמש "".

משהו כמו char a = "a"; תזרוק שגיאה, מכיוון שמחרוזות מאוחסנות כמצביעים ואילו תו נשמר בקוד ה- ascii המקביל שלו (כמספר שלם)


תשובה 2:

ציטוטים כפולים מגדירים מיתרים עם אופי סיום nul. ציטוטים בודדים לא עושים זאת.

"a" מגדיר 0x61, 0x00
'a' מגדיר 0x61

"3" מגדיר 0x33, 0x00
'3' מגדיר 0x33

כך שנוכל להגדיר

char * p = "3";

אבל איננו יכולים לעשות זאת

char * p = '3';

זה ייתן שגיאה כמו 'אתחול סוג * משתנה char * עם charvalue'.

אבל אנחנו יכולים לעשות זאת

char c = '3';