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; 时候 就能正常运行 为啥?求大神!
展开
 我来答
不挂bg
推荐于2017-09-18
知道答主
回答量:29
采纳率:0%
帮助的人:22.1万
展开全部
% 求余 针对的是整型,你的pow() 会自动转化为double型! 因为你的x是整形,所以其实这样的
x=(int)n/pow(10,w);编译器替你强转了。。。。
追问
这个虽然字少但是懂了!
顺便问一下 为啥一个getchar()停不住?我前面明明没有加\n的地方 它把什么给吸收了?
追答
什么叫停不住???你可以在main()函数里的return 0;前加system("pause"); 会停住!要 加头文件#include
你想知道吸收什么,可以这样printf("%d",getchar());输出的是asc码值,你试试!!! 第一个getchar()应该吸收的是回车符
pifuzhiyong
2013-10-12 · TA获得超过815个赞
知道小有建树答主
回答量:530
采纳率:38%
帮助的人:141万
展开全部
double,float不支持%(mod)符号
当你写成
y=n/pow(10,w); x=y%10;

就没有出现double %的情况了
等价于写成x=(int)(n/pow(10,w))%10;
追问
整型除以整型就默认为是浮点型吗?我这里无论输入什么数  那个除法除出来都是整数啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
橙心橙愿
2013-10-12 · TA获得超过1032个赞
知道小有建树答主
回答量:460
采纳率:100%
帮助的人:220万
展开全部
整型数可以取余操作,实型数据却不行,在C 语言中 实型变量分为单精度型和双精度型两种,分别用float和double进行定义 单精度型:float a,b,c; 双精度型:double x,y,z;
pow()返回值是double类型
追问
顺便问一下  为啥一个getchar()停不住?我前面明明没有加\n的地方 它把什么给吸收了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好嘞啊啊啊啊
2013-10-12 · TA获得超过2612个赞
知道大有可为答主
回答量:1860
采纳率:66%
帮助的人:1174万
展开全部
我来帮你回答第二个问题吧
你输数据的时候要敲回车 这个回车 会等待被读取,会被第一个getchar给读取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式