免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2040 | 回复: 9
打印 上一主题 下一主题

大家能够说出这个输出结果吗?并且给个解释 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-24 19:43 |只看该作者 |倒序浏览
大侠们:能够一下看出这个结果是多少吗?并且给个解释,这是我在填写nokia的网上简历时,遇到的一个小问题

   int i = 7;
   printf("it is %d\n", i++ * i++);
这个输出结果是多少,为什么?








我开始以为是56,但是不对,是49,

论坛徽章:
0
2 [报告]
发表于 2010-04-24 19:58 |只看该作者
i++*i++的执行顺序是
1.i*i
2.i=i+1
3.i=i+1

论坛徽章:
0
3 [报告]
发表于 2010-04-24 20:13 |只看该作者
ls正解

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2010-04-24 20:52 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2010-04-24 21:26 |只看该作者
这个很无解的
换几个编译器试试就有感觉了

论坛徽章:
0
6 [报告]
发表于 2010-04-24 21:32 |只看该作者
未定义行为吧

论坛徽章:
0
7 [报告]
发表于 2010-04-24 22:01 |只看该作者
本帖最后由 star1983653 于 2010-04-24 22:08 编辑

结果应该根据编译器有不同吧。
VC下,结果是49

论坛徽章:
0
8 [报告]
发表于 2010-04-26 11:19 |只看该作者
回复 2# 河边一支柳



    如果这时先执行 i * i;然后执行i++, i++
为什么如下结果还是49呢
    int i = 7;
        printf("it is %d\r\n", (i++) * (i++));

按理说,此时应该先计算括号内的啊,括号的优先级最高啊,左边的表达式结果是7,右边表达式的结果是8,应该是56,为什么这个结果还是49呢,我在rethat上试的,不理解啊

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
9 [报告]
发表于 2010-04-26 11:53 |只看该作者
49
56
64
烧毁显卡
格掉硬盘
……

理论上都是符合C标准的。

论坛徽章:
0
10 [报告]
发表于 2010-04-26 11:58 |只看该作者
又有人问未定义行为,唉!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP