首先肯定一点,你自己的理解是正确的,你的代码按照ANSI C/C89/C99/GNU89/GNU99标准都是没问题的出现问题的原因就是因为,我有90%的把握肯定你用的是VC6.0,这个版本把循环变量的定义实际上是放在了for循环开始之前,也就是说循环结束后,该变量还存在,因此在后面会报重定义如果你使用VS 2005或者GCC等其他编译器的话,这个代码是不会报错的。
try{}
大括号限定了作用域的范围,仅此而已