c语言新手求助

这是一个求正的代码,但输入-2得到的却是0为什么啊,求前辈解答... 这是一个求正的代码,但输入-2得到的却是0为什么啊,求前辈解答 展开
 我来答
匿名用户
2019-03-02
展开全部
因为整型数据与浮点型数据的存储方式是不一样的,例如浮点型是32位4个字节,它的后4位是用来表示小数点的数,而整型数据就除了最高位判断是否为无符号,后面的31位全为表示整型数据,有些编译器不将他进行强转,是会报错的,即时不报错效果肯定也是天差地别。比如写成printf("%f\n",(float)num);这样将num在输出之前就强转成浮点型数据了,就没有错了
百I度网友AQnlQ
2019-03-16 · TA获得超过143个赞
知道小有建树答主
回答量:188
采纳率:37%
帮助的人:14.9万
展开全部
此程序中,已定义num为整型变量,而在后面的printf()输出时,类型被描述为浮点数(%f)。这样写法是有问题的。c语言中,整型变量和浮点型变量在内存中的存放格式是不一样的。整型变量表示的是一个16位长的二进制数,在内存中占用2个字节单元,而浮点数是由一个字节的阶码和3个字节的尾数构成的,共占用4个字节内存单元。将2字节的整型数按4字节浮点数型式输出,会得到无法预料的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8d96a18
2019-03-01 · TA获得超过133个赞
知道小有建树答主
回答量:148
采纳率:65%
帮助的人:52.2万
展开全部
因为是整型啊,你输出写成了%f,改成%d
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2019-03-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6743万
展开全部
因为代码中用错了输出控制符,应该将printf("%f\n",num);中的%f改成%d才是。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱猪猪的灰灰
2019-05-06 · 超过33用户采纳过TA的回答
知道答主
回答量:80
采纳率:80%
帮助的人:23.7万
展开全部
因为你输出是,应该使用%d,而不是%f。
%d 整形。int
%f 单精度实数 float
%lf 双精度实型 double
%c 字符型 char
%s z字符串 char[]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(18)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式