标题:关于 变量++ 和 ++变量 的问题
只看楼主
Moumon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-5-16
结帖率:0
已结贴  问题点数:1 回复次数:7 
关于 变量++ 和 ++变量 的问题
//各位大佬,我刚学习C语言。在学习中有一个疑问!为什么“++j”打印出来是4.
//打印时,从右向左开始。所以第一行输出是3,2,1.i++是先运算再自加1.我能理解。
//第二行,按照打印逻辑,不应该是   3,2,2吗?  请大佬们解惑!!

#include <stdio.h>
int main(void)
{
    int i = 1;
    int j = 1;
    printf("%d,%d,%d",i++,i++,i++);
    printf("%d,%d,%d",j++,j++,++j);

    return 0;
}
运行结果:
3,2,1
3,2,4
搜索更多相关主题的帖子: 打印 变量 i++ int 学习 
2020-05-16 20:03
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:1 
搜一下论坛里的很多内容可以解决你的这个问题。

借用一下侯捷的话:勿在浮沙筑高台。
2020-05-16 20:07
Moumon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-5-16
得分:0 
回复 2楼 吕孟伟
谢谢!
2020-05-16 20:39
BJenjoy
Rank: 1
等 级:新手上路
威 望:1
帖 子:7
专家分:4
注 册:2020-5-15
得分:1 
这个没意义,随机的,看编译器
2020-05-18 16:17
Moumon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-5-16
得分:0 
回复 4楼 BJenjoy
嗯,好的。谢谢大佬指点!
2020-05-19 13:15
胡晓影
Rank: 2
等 级:论坛游民
帖 子:9
专家分:15
注 册:2020-4-14
得分:1 
按理说结果不应该是
321
334吗,我是小白,求教
2020-05-19 14:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:1 
以下是引用胡晓影在2020-5-19 14:10:46的发言:

按理说结果不应该是
321
334吗,我是小白,求教

"按理",你按的谁的理呢?
如果你按的是 谭浩强的理,那我没办法。
如果你按的是 C/C++标准的理,那 C/C++标准 规定这属于 未定义行为。所谓 未定义行为,就是编译器没考虑这种情况该怎么处理,一切结果都有可能。包括 直接格式化硬盘 等都有可能。
2020-05-19 16:52
Moumon
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-5-16
得分:0 
回复 7楼 rjsp
是的,我现在也明白了!谢谢大佬解析!

[此贴子已经被作者于2020-5-25 18:42编辑过]

2020-05-25 18:41



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




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

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