| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1575 人关注过本帖
标题:c语言单目运算符++输出问题
只看楼主 加入收藏
konglong37
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-1-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
c语言单目运算符++输出问题
#include "stdio.h"
void main()
{
  int a=5;
  printf("%d,%d\n",a++,a++);  
  printf("%d,%d",a++,a++);
}


结果输出为


5,5
7,7


不能理解,请高手指教为什么
搜索更多相关主题的帖子: c语言 输出 运算符 
2010-03-01 10:44
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:2 
不是这样研究问题的……

简单的生活
2010-03-01 11:23
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:2 
编译器问题,由于 a = 5
第一个 printf  的两个 a++ ,由于 ++ 在 a 后,因此输出后再自加1
所以先输出两个5,再输出两个7。

你可以试试把 ++ 写在 a 的前面


另外,a++ 这类语句最好把他单独为一个语句,这样代码的可移植性就高了。因为不同的编译器会有不通的编译效果。




[ 本帖最后由 lixnkei 于 2010-3-1 12:56 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-03-01 12:21
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:2 
这与编译有关,不要问为什么!

★★★★★为人民服务★★★★★
2010-03-01 12:43
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:2 
回复 楼主 konglong37
    这种运算在实际程序中根本用不到,而且它的结果与编译器的运算先后有关.你这个编译器对这个程序的处理就是先自加之后再输出,所以会有这种结果.

    不要再纠缠在这种问题上,没有实际的意义.在一些著名的 C 评议著作中,有人曾经说过,这种代码行为的结果为"未定义"的,也就是说是不确定的,在不同的编译环境中可能会有不同的结果.
2010-03-01 12:46
shenhaoqin
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2010-1-13
收藏
得分:2 
我用的TC,运行结果是:
6,5
8,7

编译系统不一样吧。
2010-03-01 15:17
szweifj
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2010-2-10
收藏
得分:2 
a++ 的含义是:先调a的值,然后a的值加1,
在这个程序中,第一个printf函数,首先调用a,输出 5,5,然后调用(a++),(a++),使a的值变为:7
第二个printf函数同理
希望能帮到你
2010-03-01 15:32
liqiangzk982
Rank: 2
等 级:论坛游民
帖 子:50
专家分:16
注 册:2006-12-20
收藏
得分:0 
看下边的链接里的东东就知道结果了。
https://hi.bccn.net/space-115268-do-blog-id-15984.html

菜鸟我最大!
2010-03-01 15:37
快速回复:c语言单目运算符++输出问题
数据加载中...
 
   



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

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