免费注册 查看新帖 |

Chinaunix

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

[C] 求教!~C语言中自加的输出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-05 22:15 |只看该作者 |倒序浏览
本帖最后由 xuer2016 于 2011-07-05 22:17 编辑

初学C语言,在运算时遇到一个问题,代码如下:

#include<stdio.h>

int main(){
    int a=1;
    printf("%d %d %d %d\n",a,++a,++a,++a);

    a=1;
    printf("%d %d %d %d\n",a,a++,a++,a++);

    return 0;
}
为什么第一次的输出全部为4,而不是像第二次中的按运算结合性从右向左递增输出???
求大大们指点!~~

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

论坛徽章:
0
3 [报告]
发表于 2011-07-06 00:41 |只看该作者
回复 2# pmerofc
现在明白了,谢谢!
原来是道无聊的问题

论坛徽章:
0
4 [报告]
发表于 2011-07-06 01:00 |只看该作者
回复 1# xuer2016


    你执行的结果是什么,把你执行的结果贴出来看看。肯能跟系统有关系。

论坛徽章:
0
5 [报告]
发表于 2011-07-06 01:15 |只看该作者
回复 4# cgmeco


第一条输出:4 4 4 4
第二条:4   3   2   1

正如2楼大大说的,++的运算在C89,C99定义不明确,计算的结果是要看编译器是如果解释这段代码的,是个没有意义的问题,因为没标准....

论坛徽章:
0
6 [报告]
发表于 2011-07-06 01:21 |只看该作者
回复 4# cgmeco


    你确定你贴出来的结果和你编译期自行出来的结果一样的?

第一个输出可以理解,系统在自加完了,统一用同一个变量,导致结果输出是一致的。

而第二个,就要好好早早原因了。起码不会是递减输出吧,有点匪夷所思。应该递增才对吧?

论坛徽章:
0
7 [报告]
发表于 2011-07-06 06:45 |只看该作者
对于初学者、学生、公司的程序员,玩这种无聊的东西,我要打他老师的屁股。

论坛徽章:
0
8 [报告]
发表于 2011-07-06 23:49 |只看该作者
这玩意儿的结果貌似还和编译器相关。

论坛徽章:
0
9 [报告]
发表于 2011-07-07 00:21 |只看该作者
其实这些就算知道也没用,编程的时候绝对不会用到的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP