zoukankan      html  css  js  c++  java
  • 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
    ", i);//Only Microsoft Visual C++ 6.0 
        printf("k = %d
    ", k);//Only Microsoft Visual C++ 6.0 

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

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

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

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

  • 相关阅读:
    多线程的互斥(下)——信号量
    Linux下几种另类创建文件之方法
    Linux下VsFTP和ProFTP用户管理高级技巧 之一
    全面了解Linux下Proc文件系统
    许可证大阅兵
    SSH远程快速登录Linux
    为root账户更名
    Linux集群的I/O性能测试
    Think Pad笔记本分区解决思路及方法
    图形界面备份Linux系统介绍
  • 原文地址:https://www.cnblogs.com/LubinLew/p/define_variable_in_for.html
Copyright © 2011-2022 走看看