标题:求运行结果
只看楼主
li凡
Rank: 2
等 级:论坛游民
帖 子:13
专家分:27
注 册:2018-10-7
结帖率:100%
已结贴  问题点数:20 回复次数:12 
求运行结果
#include <stdio.h>
main()
{
    float x=1,y;
    y=++x*++x;
    printf("%f\n",y);
 }


答案是6 在dev-c++上运行的是9
求大佬讲解
搜索更多相关主题的帖子: 运行 结果 printf 答案 讲解 
2018-10-08 18:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
先要说清楚为何要写成 y=++x*++x;
为的是什么?
2018-10-08 19:42
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:3 
先把x加1,x等于2,把2赋予x,再乘以x+1,也就等于2乘3=6了
2018-10-08 19:47
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:0 
看错了,。。。
2018-10-08 20:15
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:4
帖 子:103
专家分:537
注 册:2018-3-15
得分:3 
这种题看你编译器怎么理解了,你用TC去试试应该输出是6,VC和DEV的编译器是先执行完两个++,最后运算的是3*3,答案理解的是2*3。这种题没有实际意义。

printf("萌新一枚,请多指教");
2018-10-08 20:50
li凡
Rank: 2
等 级:论坛游民
帖 子:13
专家分:27
注 册:2018-10-7
得分:0 
回复 2楼 吹水佬
额,这是书上的题,我也很无奈。。。
2018-10-09 10:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
以下是引用li凡在2018-10-9 10:14:27的发言:

额,这是书上的题,我也很无奈。。。

所以说这些“以其昏昏,使人昭昭”的教科书害人呀!
作者不知道这是C/C++标准中“未定义行为”,根本就没有什么什么结果可言可研究。
所谓“未定义行为”,简单通俗地讲,就是C/C++标准明确告诉编译器不需要考虑的情况。
很多人会将“未定义行为”和“实现定义行为”弄混,然后告诉你在某某编译器上先做什么后做什么结果所以是多少,都是瞎扯。

2018-10-09 10:44
小昆
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2018-10-6
得分:3 
float  不是小数吗? 为什么还要定义成小数
2018-10-11 23:33
小昆
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2018-10-6
得分:0 
不是打错了,1是整数,为什么定义成小数?
2018-10-11 23:34
f563605580
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2018-9-13
得分:3 
回复 9楼 小昆
写法不是很标准,各个编译器运行会有差异,建议采用标准写法
2018-10-12 00:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490249-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.257833 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved