[問題] char宣告基礎問題

作者: wtmo5566 (effeminacy)   2016-01-22 21:55:10
[c語言]
下列那一個字串的定義有錯誤?
(A) char s[]="123";
(B) char s[3]="123";
(C)char s[]="1";
(D) char s[]={'1', '2', '3', '\0'};
ANS:B
請問 char s[3]="123"; 錯在哪?
我在編譯器打了下面指令,沒有發現語法錯誤
char s[3]="123";
printf("%c",s[0]);
作者: qscgy4 (有點厲害)   2016-01-22 22:14:00
char s[4]="123", s[0]='1',s[1]='2',s[2]='3',s[4]='\0'去把 字元、字串的關係搞清楚
作者: uranusjr (←這人是超級笨蛋)   2016-01-22 22:15:00
題目出得不好, 需要定義什麼是「錯誤」
作者: qscgy4 (有點厲害)   2016-01-22 22:15:00
更正筆誤 s[0]='1',s[1]='2',s[2]='3',s[3]='\0'另外如果要出出字串應該是 printf("%s", s);
作者: uranusjr (←這人是超級笨蛋)   2016-01-22 22:32:00
我漏看題目有明確說「字串」, 這樣的話就沒疑問 B 有誤
作者: wtmo5566 (effeminacy)   2016-01-22 22:34:00
感謝各位解答,了解了
作者: azureblaze (AzureBlaze)   2016-01-23 00:49:00
我覺得C裡的"字串"是否等同C-string有討論的空間XD
作者: longlongint (華哥爾)   2016-01-23 03:06:00
看到C/C++每年都有新血加入 感到溫馨
作者: ronin728 (浪人)   2016-01-23 13:14:00
樓上的id真猛..C/C++每年都有人問啊,學校教的嘛
作者: stupid0319 (徵女友)   2016-01-23 14:05:00
每年都有計算機概論課呀如果編碼者故意不用終止符呢,那這題怎能算像加密解密或病毒程式什麼的
作者: remmurds (Stronghold)   2016-01-24 09:36:00
這題出得不好+1
作者: qscgy4 (有點厲害)   2016-01-24 12:19:00
"123" 本身的定義就是 1,2,3,\0 四個字元硬要把他丟入一個 [3] 的陣列會造成溢位吧,本質上就錯了

Links booklink

Contact Us: admin [ a t ] ucptt.com