[问题] 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