for循环变量作用域的范围
2014-12-09 10:33
387 查看
#include <iostream>
using namespace std;
int main(){
int a,b,min;
cout<<"Enter two numbers:"<<endl;
cin>>a>>b;
min=a>b?b:a;
for (int d=2; d<min; d++)
if (((a%d)==0)&&((b%d)==0)) break;
if(d==min)
{cout<<"No common denominators\n";return 0;}
cout<<"The lowest common denominator is %d"<<endl<<d;
return 0;
}
在windows下,用g++编译这段代码会报错。
error: name lookup of `d' changed for new ISO `for' scoping
error: using obsolete binding at `d'
------------------------------------------------------------
橙色字体的意思是for循环在“初始化”定义的部分变量作用域的一个问题。g++在此把此变量作用域限定在了for循环中,或者说出了for循环定义的变量就无效了。
应该把红色字体改成:
int d;
for (d=2; d<min; d++)
using namespace std;
int main(){
int a,b,min;
cout<<"Enter two numbers:"<<endl;
cin>>a>>b;
min=a>b?b:a;
for (int d=2; d<min; d++)
if (((a%d)==0)&&((b%d)==0)) break;
if(d==min)
{cout<<"No common denominators\n";return 0;}
cout<<"The lowest common denominator is %d"<<endl<<d;
return 0;
}
在windows下,用g++编译这段代码会报错。
error: name lookup of `d' changed for new ISO `for' scoping
error: using obsolete binding at `d'
------------------------------------------------------------
橙色字体的意思是for循环在“初始化”定义的部分变量作用域的一个问题。g++在此把此变量作用域限定在了for循环中,或者说出了for循环定义的变量就无效了。
应该把红色字体改成:
int d;
for (d=2; d<min; d++)
相关文章推荐
- 注意for循环中变量的作用域
- for循环中 4000 的变量作用域
- 讲解Python中for循环下的索引变量的作用域
- 讲解Python中for循环下的索引变量的作用域
- Java的垃圾回收机制,GC,和变量的创建和删除的关系(即变量的作用域,for循环中的某个变量,出了for循环再引用就会报错了,因为该变量已经被从内存中删掉了)
- 注意for循环中变量的作用域
- js中for循环变量的作用域
- 解决VC6和VC2008的for循环变量作用域不同问题的一个方法
- JS中for循环变量作用域
- 注意for循环中变量的作用域
- 注意for循环中变量的作用域
- 关于For循环中定义的变量在循环外的引用
- for循环中声明变量的一个问题回顾
- for循环的变量设置
- 无符号数(unsigned) 和带符号数(int)的循环变量 在for循环条件判断使用中的区别1例
- 关于Java for循环括号中的变量的Java测试
- 对"for循环中尽量减少对变量的重复计算"提出质疑
- 好久没写博客了,今天没事测试一下浏览器for循环顺序不同及定义变量位置不同的效率
- for i in 算术,变量,循环判断=苦逼,坑爹; do echo $i;done(二)
- bash 循环中变量作用范围的问题分析