随手写了一个验证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的作用域出来了。
深以为然。
--------------------------------------------