| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 479 人关注过本帖
标题:求运行结果
只看楼主 加入收藏
li凡
Rank: 2
等 级:论坛游民
帖 子:9
专家分: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
求大佬讲解
2018-10-08 18:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:169
帖 子:6388
专家分:28007
注 册:2014-5-20
  得分:3 
先要说清楚为何要写成 y=++x*++x;
为的是什么?
2018-10-08 19:42
豆豆的滴
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:7
帖 子:188
专家分:362
注 册:2018-5-7
  得分:3 
先把x加1,x等于2,把2赋予x,再乘以x+1,也就等于2乘3=6了
2018-10-08 19:47
豆豆的滴
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:7
帖 子:188
专家分:362
注 册: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
等 级:论坛游民
帖 子:9
专家分:27
注 册:2018-10-7
  得分:0 
回复 2楼 吹水佬
额,这是书上的题,我也很无奈。。。
2018-10-09 10:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:273
帖 子:6001
专家分:34312
注 册: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







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

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