C语言变量声明新手疑问:代码为何与书籍内容不符?
问题解答
你没有误解书中的表述,问题出在C语言不同版本的标准差异上:
- C89(旧标准):这是早期的C语言标准,确实要求变量声明必须放在代码块(
{})的最开头,不能放在执行语句之后。不少入门书籍基于这个旧标准编写,所以会提到这条规则。 - C99及之后的新标准(C11、C17等):对变量声明规则做了放宽,允许在代码块的任意位置声明变量,甚至支持在
for循环的初始化部分直接声明循环变量(比如你代码里的for(int i = 0; i<=10; i++))。 - OnlineGDB的编译器:它默认使用的GCC编译器会启用C99或更高版本的标准,所以你的代码能正常编译运行。如果想验证旧标准的规则,可以在编译时添加
-std=c89参数,这时你的代码就会触发编译错误,和书中描述一致。
内容的提问来源于stack exchange,提问作者GNZ
相关产品推荐
相关产品推荐

