C语言 illegal, left operand has type 'double'
#include<stdio.h>#include<math.h>intmain(void){intn,w,x,y,i;printf("n=");scanf("%d",&...
#include<stdio.h>
#include<math.h>
int main(void)
{
int n,w,x,y,i;
printf("n=");
scanf("%d",&n);
w=0;
i=n;
do
{
i=i/10;
w++;
}
while(i>=10);
for(w=w;w>=0;w--)
{
x=n/pow(10,w)%10; 这里出现问题了
printf("%d ",x);
}
getchar();
getchar();
return 0;
}
显示: error C2296: '%' : illegal, left operand has type 'double'
当我把这句改成y=n/pow(10,w); x=y%10; 时候 就能正常运行 为啥?求大神! 展开
#include<math.h>
int main(void)
{
int n,w,x,y,i;
printf("n=");
scanf("%d",&n);
w=0;
i=n;
do
{
i=i/10;
w++;
}
while(i>=10);
for(w=w;w>=0;w--)
{
x=n/pow(10,w)%10; 这里出现问题了
printf("%d ",x);
}
getchar();
getchar();
return 0;
}
显示: error C2296: '%' : illegal, left operand has type 'double'
当我把这句改成y=n/pow(10,w); x=y%10; 时候 就能正常运行 为啥?求大神! 展开
4个回答
展开全部
double,float不支持%(mod)符号
当你写成
y=n/pow(10,w); x=y%10;
就没有出现double %的情况了
等价于写成x=(int)(n/pow(10,w))%10;
当你写成
y=n/pow(10,w); x=y%10;
就没有出现double %的情况了
等价于写成x=(int)(n/pow(10,w))%10;
追问
整型除以整型就默认为是浮点型吗?我这里无论输入什么数 那个除法除出来都是整数啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
整型数可以取余操作,实型数据却不行,在C 语言中 实型变量分为单精度型和双精度型两种,分别用float和double进行定义 单精度型:float a,b,c; 双精度型:double x,y,z;
pow()返回值是double类型
pow()返回值是double类型
追问
顺便问一下 为啥一个getchar()停不住?我前面明明没有加\n的地方 它把什么给吸收了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我来帮你回答第二个问题吧
你输数据的时候要敲回车 这个回车 会等待被读取,会被第一个getchar给读取
你输数据的时候要敲回车 这个回车 会等待被读取,会被第一个getchar给读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询