For 语句中变量的范围

编程调试过程中发现一个比较诡异的事情。在For语句中的循环变量的作用范围有一些特殊的规则。为此进行了一系列的试验:

include <stdio.h>

int main(void){
int i=0;
for (i=0; i<10;i++){
printf("i=%d\n",i);
}
printf("ix=%d\n",i);
return 0;
}

输出结果如下:


output1.png

在程序中for语句的循环变量在整个程序中有效。
将程序做如下修改:

include <stdio.h>

int main(void){
int i=0;
for (int i=0; i<10;i++){
printf("i=%d\n",i);
}
printf("ix=%d\n",i);
return 0;
}

重新调试运行结果如下:


output2.png

在第二个程序中i在循环体中定义了一下,让i只在For语句内部递增 ,而外面的变量i保持不变。

这样的好处是, 在for循环中选择循环变量是可以不用考虑这个变量的标识符是否已经使用过了。
坏处是: 如果在循环体之外还需要使用循环变量的话,则尽量不要在fo循环体内部进行定义。

拿while循环也实验了一下。

  1. 在判断语句中使用的变量是没有机会进行定义的(还不会在判断语句中进行类型声明)。
  2. 可以在循环体内定义与循环体外面相同的变量。但是不能带出循环体。这一点上是和for循环一致的。

结论

在循环体内可以定义循环体内部使用的变量,与主程序标识符可以相同。作用域只在循环体内有效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,407评论 0 2
  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,723评论 3 71
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,169评论 0 0
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,473评论 3 44
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,007评论 2 13