| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 392 人关注过本帖
标题:求运行结果
只看楼主 加入收藏
li凡
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册: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
求大佬讲解
2018-10-08 18:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:160
帖 子:6202
专家分:27163
注 册:2014-5-20
  得分:3 
先要说清楚为何要写成 y=++x*++x;
为的是什么?
2018-10-08 19:42
豆豆的滴
Rank: 2
等 级:论坛游民
威 望:2
帖 子:52
专家分:66
注 册:2018-5-7
  得分:3 
先把x加1,x等于2,把2赋予x,再乘以x+1,也就等于2乘3=6了
2018-10-08 19:47
豆豆的滴
Rank: 2
等 级:论坛游民
威 望:2
帖 子:52
专家分:66
注 册:2018-5-7
  得分:0 
看错了,。。。
2018-10-08 20:15
ab1412
Rank: 7Rank: 7Rank: 7
来 自:M78星球
等 级:黑侠
威 望:3
帖 子:100
专家分:535
注 册:2018-3-15
  得分:3 
这种题看你编译器怎么理解了,你用TC去试试应该输出是6,VC和DEV的编译器是先执行完两个++,最后运算的是3*3,答案理解的是2*3。这种题没有实际意义。

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

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

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

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







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

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