for(int i = 0;i < 10;i++)和int i;for(i = 0;i < 10;i++)

来源:互联网 发布:犀牛培训软件多少钱 编辑:程序博客网 时间:2024/05/16 06:24


随手写了一个验证2147483647是不是质数的,不过脑的代码,居然编译报错。
代码如下:

# include <stdio.h>
# include <math.h>int main(void){    int num = 2147483647;    for(int i = 2; i < (int)sqrt(2147483647); i++){        if (num%i == 0)            return -1;    }    printf("2147483647是一个质数");    return 0;}

然后把for里的 int i 单独放一行,如下:

int i;

for (i = 2; i <(int)sqrt(2147483647); i++)


就OK了,表示不解。

以前一直用第一种写法都没报错,可能以前只是用i来控制循环而已。


看有一个解读是:第一个,i的作用域在for内;第二个,i的作用域出来了。


深以为然。


--------------------------------------------