我在第 8、10 和 12 行收到"非法使用浮点"错误。
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{ int p,i,c=0;
scanf("%d",&p);
for(i=11;i>=0;i--)
{ if((p==pow(2,i))&&(p%pow(2,i)==0)) //here
c++;
else if((p/pow(2,i)!=0)&&(p%pow(2,i)!=0)) //here
{ c++;
p=p%pow(2,i); //here
}
}
printf("%d",c);
getch();
}
我认为在使用 pow(( 函数计算 p 的余数时存在问题。请帮助我。
不能
对模数 ( %
( 使用float
或double
值。模的值需要是一个整数,这是编译器在给你错误"非法使用浮点"时告诉你的
您不应该将取模运算符用于其他任何事情
<integer value>%<integer value>
如果您只想像评估int
一样评估您的double
(不四舍五入(,那么您可以将double
投射到 int
.
喜欢这个:
p%(int)(pow(2,i))!=0