您的位置:首页 > 其它

第七题:下面程序输出什么?为什么?

2013-02-20 22:18 351 查看
如题:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐