学习C语言过程中在函数体内执行sqrt遇到的疑问。
#include<stdio.h>
#include<math.h>
void number(int n) //判断素数,不考虑数字1、2、3
{
int a = 0;
int i = 0;
for (i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
printf("%d不是素数\n", n);
break;
}
//a = sqrt(n); //赋值给a,在用a去比较,结果正常
//if (i >= a) //此段代码执行结果正确
//{
// printf("%d是素数\n", n);
//}
if (i >= sqrt(n)) //输入素数不进入
{
printf("%d是素数\n", n);
}
}
}
int main()
{
int n = 0;
printf("输入一个数判断:>");
scanf("%d", &n);
number(n);
return 0;
}
输入任何素数得到的结果都是空白,输入非素数结果正常。



把sqrt赋值给变量a,在用a去对比结果就正常,难道直接比较和赋值后比较不等价吗?
想要弄清楚为何一个函数内的sqrt(n),一个好使,一个不好使。另外想知道在VS2019中调试,如何可以不赋值给其他变量直接看到sqrt(n)的结果。
