page contents

C++变量的定义位置

C++ 不但在C语言的基础上进行了很多扩展,而且也对C语言部分做了...

C++ 不但在C语言的基础上进行了很多扩展,而且也对C语言部分做了细节上的改进,变量的定义位置就是其中之一。

C89 规定,所有局部变量都必须定义在函数开头,在定义好变量之前不能有其他的执行语句。C99 标准取消这这条限制,但是 VC/VS 对 C99 的支持很不积极,仍然要求变量定义在函数开头。


请看下面的代码:

    1. #include <stdio.h>
    2. int main(){
    3. int a;
    4. scanf("%d", &a);
    5. int b;
    6. scanf("%d", &b);
    7. int c = a + b;
    8. printf("%d\n", c);
    9. return 0;
    10. }

将代码保存到源文件main.c,那么它可以在 GCC、Xcode 下编译通过,但在 VC/VS 下会报错。GCC、Xcode 对 C99 的支持非常好,可以在函数的任意位置定义变量;但 VC/VS 对 C99 的支持寥寥无几,必须在函数开头定义好所有变量。

将上面的代码再保存到源文件main.cpp,那么它在 GCC、Xcode、VC/VS 下都可以编译通过。这是因为 C++ 取消了原来的限制,变量只要在使用之前定义好即可,不强制必须在函数开头定义所有变量。

注意源文件的后缀,.c是C语言代码,.cpp是C++代码,它们的编译方式不同。

取消限制带来的另外一个好处是,可以在 for 循环的控制语句中定义变量,请看下面的例子:

    1. #include <iostream>
    2. using namespace std;
    3. int sum(int n){
    4. int total = 0;
    5. //在for循环的条件语句内部定义变量i
    6. for(int i=1; i<=n ;i++){
    7. total += i;
    8. }
    9. return total;
    10. }
    11. int main(){
    12. cout<<"Input a interge: ";
    13. int n;
    14. cin>>n;
    15. cout<<"Total: "<<sum(n)<<endl;
    16. return 0;
    17. }

运行结果:
Input a interge: 10
Total: 55

在 for 内部定义循环控制变量 i,会让代码看起来更加紧凑,并使得 i 的作用域被限制在整个 for 循环语句内部(包括循环条件和循环体),减小了命名冲突的概率。在以后的编码过程中,我推荐这种写法。


想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-06-jpqcpaam62a05ffda3a8d.jpeg


  • 发表于 2021-03-19 16:04
  • 阅读 ( 685 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小柒
小柒

1478 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章