这个主要由编译器版本标准决定的:
在 C 或 C++ 中,在某些如 C89 或早期的 C++ 标准的旧版本编译器中可能会报错的;
因为在这些标准中,循环变量 i 必须在循环外部声明,而不能直接在 for 循环内部定义;
C99 及以后的标准允许在for循环内部声明变量。 有些场景可能还不允许在代码之间定义变量,如以下的操作定义变量i,编译会报错:
代码语句1;
int i;
代码语句2;
这个时候我们就没办法以“就近使用就近定义”的原则进行变量定义,而只能统一在代码开始之前定义好所有需要用到的变量。