第七题:下面程序输出什么?为什么?
如题:
int main() { const int SIZE = 10; char a[SIZE] = {1000, -1000, 256}; printf("%d\n", strlen(a)); return 0; }
此题第一个是编译错误,const修饰的变量是只读变量,而不是我们翻译的常量
也就是说SIZE还是变量,只是编译器在编译时从语法的层面不要它作为左值,但是这改变不了它变量的本质
大家想想数组定义时一定不能用变量做下标吧
把SIZE定义成宏可以改掉这个编译错误
剩下的就是输出了
大家的焦点在,数组中么有一个是字符
我想说的是,ascii码确实只有0--127, 但是不代表char只能表示ascii码,
对于操过char范围的值,我们的编译器会采用截断处理,
最后的256正好被截断成0, 所以输出2