为什么这段代码在C中有效

时间:2012-12-16 01:32:54

标签: c

#include <stdio.h>

int main(){

char array[2];
array[0] = 'q';
array[1] = 'a';
printf("%s",array);

return 0;
}

如果你问我这个代码不行。 printf打印数组[2]像字符串,但它不是一个字符串。当我执行它时,它完美地工作。你能解释一下原因吗?

2 个答案:

答案 0 :(得分:5)

  

当我执行它时,它完美无缺。

你刚刚(非)幸运:你的代码展示了未定义的行为,因为它允许printf的{​​{1}}参数在字符序列的末尾运行这不是以空值终止的。

C中的字符串是%s的序列,它必须具有值为char的额外字符,称为空终止符。这是一种使代码无需未定义行为的方法:

0

答案 1 :(得分:3)

在C中,String与字符数组相同。 C中没有String这样的东西。