user-0 提问: 写了个练习题，求指点

回复:
user: user-1
content: 引用 24 楼 u013061236 的回复:LZ那么写，是定义了两个变量i，并不是重复定义，因为两个i的作用域都只在for循环中，出了for循环，就没有i这一说了 知道了，谢谢指点

user: user-2
content: 引用 13 楼 u012421456 的回复:[quote=引用 12 楼 derekrose 的回复:] [quote=引用 10 楼 u012421456 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote] 你的意思是VC6.0报的“重复定义错误”可能是错的？或许吧！VC6.0不是完全按标准来的 不过lz这个应该的确是重复定义吧！第14行已经定义了int型变量 i，而36行又来了一次，这个应该是错误吧[/quote] NO 这样写没问题 XD[/quote]  能解释简单一下吗[/quote]  LZ那么写，是定义了两个变量i，并不是重复定义，因为两个i的作用域都只在for循环中，出了for循环，就没有i这一说了

user: user-0
content: 谢谢，不过要求是统计单词长度和输出它的直方图，

user: user-3
content: #include "stdio.h" #include "stdlib.h" #include "string.h"  #define BUFF 12 // the max word len  int main(void) { 	int wdlen[BUFF]; // count all of the word len 	int index_row; 	int row_length;  	memset(wdlen, 0, BUFF); 	printf("Get me a string, I will put it out of image:\n"); 	fgets(wdlen, BUFF, stdin); 	row_length = strlen(wdlen);  	// 水平方向的 	printf("水平方向的：\n"); 	for (index_row = 0; index_row < row_length; index_row++) 	{ 		printf("+"); 	} 	printf("\n\n");  	// 垂直方向的 	printf("垂直方向的：\n"); 	for (index_row = 0; index_row < row_length; index_row++) 	{ 		printf("+"); 		printf("\n"); 	} 	printf("\n");  	printf("Thank you!\n"); }

user: user-3
content: #include "stdio.h" #include "stdlib.h" #include "string.h"  #define BUFF 12 // the max word len #define IN    1  #define OUT   0   int main(void) { 	int ch;          // buff a character 	int wdlen[BUFF]; // count all of the word len 	int wd = 0; 	int status = OUT; // outside  	int index_row; 	int index_col;  	memset(wdlen, 0, BUFF); // 	for (index = 0; index < BUFF; index++) // 		wdlen[i] = 0; // init 	printf("Get me a string, I will put it out of image:\n"); 	while ((ch = getchar()) != EOF) 	{ 		if(ch ==  ' ' || ch ==  '\t' || ch == '\n') 		{ 			if(status == IN) 				++wdlen[wd]; 			status = OUT; 			wd = 0; 		} 		else if (status == IN) 		{ 			++wd; 		} 		else 		{ 			status = IN; 			++wd; 		} 	}  	// 水平方向的 	for (index_row = 0; index_row < BUFF; index_row++) 	{ 		for (index_col = 0; index_col < wdlen[index_row]; index_col++) 		{ 			printf("+"); 		} 		printf("\n"); 	}  	// 垂直方向的 	for (index_row = 0; index_row < BUFF; index_row++) 	{ 		for (index_col = 0; index_col < wdlen[index_row]; index_col++) 		{ 			printf("+"); 			printf("\n"); 		} 	}  	printf("Thank you!\n"); }

user: user-4
content: 引用 21 楼 zengraoli 的回复:[quote=引用 20 楼 derekrose 的回复:] [quote=引用 19 楼 zengraoli 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote]  没有bug吧，这明显是重复定义了的。 如果应用说bug，连2010 2012都有问题。。 c++可以这么用，这样for循环内部是一个局部变量。[/quote]  2008 2010都是不支持c99的 2012我试了一下 没报错 不算bug，就是不支持吗标准而已[/quote]  [/quote]  原来2012也不支持c99

user: user-3
content: 引用 20 楼 derekrose 的回复:[quote=引用 19 楼 zengraoli 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote]  没有bug吧，这明显是重复定义了的。 如果应用说bug，连2010 2012都有问题。。 c++可以这么用，这样for循环内部是一个局部变量。[/quote]  2008 2010都是不支持c99的 2012我试了一下 没报错 不算bug，就是不支持吗标准而已[/quote]  之前在论坛上讨论过： http://bbs.csdn.net/topics/350127071  是ms的编译器好像都懒得支持c99，一直都是c90然后就c11了。c11也是一部分。。

user: user-3
content: 引用 20 楼 derekrose 的回复:[quote=引用 19 楼 zengraoli 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote]  没有bug吧，这明显是重复定义了的。 如果应用说bug，连2010 2012都有问题。。 c++可以这么用，这样for循环内部是一个局部变量。[/quote]  2008 2010都是不支持c99的 2012我试了一下 没报错 不算bug，就是不支持吗标准而已[/quote]

user: user-4
content: 引用 19 楼 zengraoli 的回复:[quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote]  没有bug吧，这明显是重复定义了的。 如果应用说bug，连2010 2012都有问题。。 c++可以这么用，这样for循环内部是一个局部变量。[/quote]  2008 2010都是不支持c99的 2012我试了一下 没报错 不算bug，就是不支持吗标准而已

user: user-3
content: 引用 9 楼 derekrose 的回复:[quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote]  没有bug吧，这明显是重复定义了的。 如果应用说bug，连2010 2012都有问题。。 c++可以这么用，这样for循环内部是一个局部变量。

user: user-3
content: 引用 6 楼 u013854998 的回复:谢谢，不过要求是统计单词长度和输出它的直方图，  仔细看：row_length 是不是字符串(即你说的单词)的长度？

user: user-1
content: 引用 16 楼 u013163178 的回复:引用 2 楼 u012421456 的回复:lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉作用范围不一样，只是不规范而已 好吧！谢谢了，又长知识了

user: user-5
content: 引用 2 楼 u012421456 的回复:lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉作用范围不一样，只是不规范而已

user: user-1
content: 引用 14 楼 derekrose 的回复:不是都告诉你了嘛 -std=c99   其实就是标准的支持，vc6.0不支持c99 谢谢了

user: user-4
content: 引用 13 楼 u012421456 的回复:[quote=引用 12 楼 derekrose 的回复:] [quote=引用 10 楼 u012421456 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote] 你的意思是VC6.0报的“重复定义错误”可能是错的？或许吧！VC6.0不是完全按标准来的 不过lz这个应该的确是重复定义吧！第14行已经定义了int型变量 i，而36行又来了一次，这个应该是错误吧[/quote] NO 这样写没问题 XD[/quote]  能解释简单一下吗[/quote] 不是都告诉你了嘛 -std=c99   其实就是标准的支持，vc6.0不支持c99

user: user-6
content: 引用 2 楼 u012421456 的回复:lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。

user: user-1
content: 引用 12 楼 derekrose 的回复:[quote=引用 10 楼 u012421456 的回复:] [quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote] 你的意思是VC6.0报的“重复定义错误”可能是错的？或许吧！VC6.0不是完全按标准来的 不过lz这个应该的确是重复定义吧！第14行已经定义了int型变量 i，而36行又来了一次，这个应该是错误吧[/quote] NO 这样写没问题 XD[/quote]  能解释简单一下吗

user: user-4
content: 引用 10 楼 u012421456 的回复:[quote=引用 9 楼 derekrose 的回复:] [quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote] 你的意思是VC6.0报的“重复定义错误”可能是错的？或许吧！VC6.0不是完全按标准来的 不过lz这个应该的确是重复定义吧！第14行已经定义了int型变量 i，而36行又来了一次，这个应该是错误吧[/quote] NO 这样写没问题 XD

user: user-1
content: 引用 8 楼 chn3698 的回复:[quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 我没用过旧的编译器，但是我比较确定楼主第36行的i是没有重定义的[/quote] 麻烦请解释一下10楼的疑问吧，谢谢

user: user-1
content: 引用 9 楼 derekrose 的回复:[quote=引用 7 楼 u012421456 的回复:] [quote=引用 3 楼 user-6 的回复:] [quote=引用 2 楼 u012421456 的回复:] lz，先不说别的，36行 i 重复定义，需要把这个 i 前面的 int 去掉 请你把vc6给丢了。[/quote]  你的意思是VC6.0太落后了？[/quote]  不是  重复定义这个问题上 vc6.0有bug[/quote] 你的意思是VC6.0报的“重复定义错误”可能是错的？或许吧！VC6.0不是完全按标准来的 不过lz这个应该的确是重复定义吧！第14行已经定义了int型变量 i，而36行又来了一次，这个应该是错误吧