随手写了一个验证2147483647是不是质数的,不过脑的代码,居然编译报错。
代码如下:
# 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;
}
我猜测应该是int i 的问题,故
把for里的 int i 单独放一行,如下:
int i; for (i = 2; i <(int)sqrt(2147483647); i++)
就OK了,表示不解。
以前一直用第一种写法都没报错,可能以前只是用i来控制循环而已。
看有一个解读是:第一个,i的作用域在for内;第二个,i的作用域出来了。
深以为然。
浙公网安备 33010602011771号