C语言为何这个程序在运行时会提示for循环里的i重复定义了?局部变量应该没影响啊

#include<iostream>
#include<string>
using namespace std;
int main(){
int a[10]={0};
string s;
cin>>s;
for(int i=0;i<s.length();i++){
a[s[i]-'0']++;
}
for(int i=0;i<10;i++){
if(a[i])
cout<<i<<","<<a[i]<<"个"<<endl;
}
return 0;
}

奇怪的问题……可能是编译器的版本太老?
总之就听它的,只定义一次i就行了。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言中for循环里的变量i和for循环外的变量i一样吗?为什么?
不一样。这是变量作用范围的小知识点。C语言中,变量分为全局变量,局部问题,临时变量,3类。全局的好理解,就是在程序的任何地方都可以使用的变量。局部变量,就是在一定范围内有定义的变量。临时更好理解了,就是临时使用一下,也是局部变量的一种,不过范围更小,用完就丢弃。比如 for(int i=0;...

关于C语言for循环的问题
但第二个for循环的首语句重新定义了i=1,没有问题,只要i是有效使用范围(作用域)。

请教大佬们关于C语言中for循环的两个问题?
for循环是C语言的循环语句,它不是函数。Main里定义的变量,只要在作用域内有语句给变量赋值,其值都会被改变。但是如果Main里定义了int i,同时有for(int i = 0; ;){}这样的语句那在for里面改变i的值,Main里的i不变。因为for里面的局部变量i只作用在for语句内,而且Main里的i不会作用在for里...

C局部变量和宏定义重名
是可以重名的,只不过局部变量可以覆盖全局的,就是在局部变量的范围内全局变量不起作用 局部会屏蔽全局。要用全局变量,需要使用 "::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些 编译器而言,在同一个函数内可以定义多个同名的局部变...

为什么在C++中for循环时把变量放在里面仍会变
因为i在循环体之外定义了,for里面有个i++,所以会这样。如果是for (int i=1;i<=10;i++),那么循环体之外的i就不存在了。

C语言函数变量重复定义
是这样的,同一个函数内定义的每个变量名(局部变量)是唯一的,其内容的改变与本函数外的任何变量无关。

C语言中问为什么我在for()里面直接定义变量会出错,还是新手不是很懂...
C89规定,在任何执行语句之前,在块的开头声明所有局部变量。在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。你用的编译器版本太低啦,建议把文件后缀改成.cpp,按照c++的方式编译,不会出错。

C语言中局部变量和全局变量的不同点和相同点是什么?
在C语言中,局部变量与全局变量在作用域和存储位置上存在显著差异:1. 局部变量仅在定义它们的函数内部有效,其作用域限定在花括号{}之内。这意味着在函数外部,代码无法访问或声明局部变量。2. 全局变量在整个程序范围内都是可见的,从它们定义的位置开始,直到包含它们的源文件结束。这意味着全局变量...

求助一个C语言问题 为什么在VC中老是提示我 warning C4101: 'c...
警告的意思为:警告C4101:'e':未引用的局部变量 原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。问题成功解决。

C语言中,在main函数一开始定义了 int i;后来又在for语句中有int i 这...
在C99以及C++标准中,在for的小括号内定义的变量才被认为是for语句块的局部变量而以前的标准,for小括号内定义的就不算for循环内部的局部变量,甚至更早的标准不可以在for内定义变量, 或者变量只能全部在最前面定义---比如vc6, int i;for(int i;...这2个i在同一个作用域, 所以是重复定义了在vs.net 及以后...

相似回答