for语句中声明变量

 

在C语言中,局部变量应该在函数的可执行语句之前定义,但在C++中变量可在任何语句位置定义,只要允许程序语句的地方,都允许定义变量。

在C99标准中C同C++一样允许在for循环语句中定义变量。并且这个变量作用域被限定在for循环中,在for循环外就成为了未定义变量(C++也是)。

※GCC下编译时需要加上std选项,例如 gcc example.c -std=c99

 

看一段程序,在for语句中声明了变量i 和 k,(允许在for循环语句中定义变量:指的是程序中i和k这2种形式

这一段程序只有在 Microsoft Visual C++ 6.0 才能编译通过,

在Microsoft Visual Studio 2008 和 GCC 下都是报错的,原因是printf 2行中i和k是未定义的。

 

//define_variable_in_for.c(pp)

#include <stdio.h>


int main(void)
{
    int n = 1;

    for (int i = 0; i < 10; i++)
    {
        int k;
        n = n * i;
        k = i;
    }//i 和 k 的作用域到此结束(ISO Standard)
    
    printf("i = %d\n", i);//Only Microsoft Visual C++ 6.0 
    printf("k = %d\n", k);//Only Microsoft Visual C++ 6.0 

    return 0; 
}
//n 的作用域到此结束
 
 

 

Microsoft Visual C++ 6.0 下能编译通过的原因是其扩大了for循环中定义的变量的作用域,作用域扩大至下一个"}",

不知道这是一个BUG还是有意为之。

 

---------------------------------------------------------------------------------------------------
参考资料:
<<C++面向对象程序设计(第二版)>>

转载于:https://www.cnblogs.com/LubinLew/p/define_variable_in_for.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值