c语言:float x,y;y=(x-=x*x,x/=10)。输入x=10,y=0?为什么呢?

简单的解释一下,我大一刚学c语言描述有歧义,补充一下。输入x=10,程序得到结果y=0,为什么y=0?... 简单的解释一下,我大一刚学c语言
描述有歧义,补充一下。输入x=10,程序得到结果y=0,为什么y=0?
展开
 我来答
匿名用户
2015-05-21
展开全部

我觉得可能是你的输出写错了,我刚刚运行了一下

#include "stdafx.h"



int _tmain(int argc, _TCHAR* argv[])

{

float x=10, y;

y = (x -= x*x, x /= 10);

printf("y=%f",y);


getchar();

return 0;

}

得到的输出结果是



建议在问编程类的题目时如果代码量不多尽量全部贴出来方便别人检查问题。

985967518
2016-01-09 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109867
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

y=-9;

c语言中有逗号运算,先计算逗号前面表达式的值,再计算表达式后面的值,最终的值等于表达式后面的值。

即,先计算x-=x*x;x=10-10*10=-90,接着计算x/=10;x=-90/10=-9,

所以最终y的值等于x的值等于-9

程序运行:

#include <stdio.h>
int main()
{
float x=10,y;
y=(x-=x*x,x/=10);
printf("y=%f,x=%f\n",y,x);
return 0;
}
/*
y=-9.000000,x=-9.000000
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
踏雪也寻梅
2015-05-21 · TA获得超过170个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:161万
展开全部
#include <stdio.h>

int main()
{
float x,y;
scanf("%f",&x);
y=(x-=x*x,x/=10);
printf("%f\n",y);
}
没问题啊!!!输出-9.000000
追问

如果换成(x -= x*10, x /= 10);呢?老师给我的答案是0,我自己做的也是-9.

追答
尽管你把票投给别人,我很失落,但还回答你的问题,看到了没,第三个printf里输出的格式为%d,是整型,而要输出的值的格式却是float型,精度转话,又涉及到负数的转化,最终转化结果就是0,这个实例表明,编程中最好统一数值的格式,尽可能的少隐式或显式转化格式,否则易出现莫名其妙的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式