| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:这个程序为什么运行结果是21?
只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
 问题点数:0 回复次数:8 
这个程序为什么运行结果是21?
#include <stdio.h>
#include <stdlib.h>
int func(int a, int b)
{ int c;
  c=a+b;return c;}
  
int main()
{ int x=6,y=7,z=8,r;
  r=func((x--,y++,x+y),z--);printf("%d\n",r);  
  system("PAUSE");   
  return 0;
}
主要是没有弄明白r=func((x--,y++,x+y),z--);是个什么意思,请教中。。。
搜索更多相关主题的帖子: include system return 
2011-06-22 20:49
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
13 + 8

My life is brilliant
2011-06-22 20:54
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 2楼 lz1091914999
为什么,请讲详细一点呀?为什么是8?还有13,是6+7得来的,还是5+8得来的?
2011-06-22 20:58
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 2楼 lz1091914999
为什么Z--在这里不发生作用?我把“--”删了以后重新compile,结果与有“--”是一样的。
但前面括号里的(x--,y++,x+y)中如果把“--”或“++”删了,结果就会发生变化,这是什么原因的?
2011-06-22 21:05
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
我帮你分析下
先分析(x--, y++, x + y)
x-- 后 x == 5, y == 7
y++ 后 x == 5, y == 8
然后计算 x + y == 5 + 8 == 13
(x--, y++, x + y) == x + y == 13
再分析 z--
z-- == 8
z-- 后 z == 7
明白了么?
2011-06-22 21:07
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 5楼 voidx
不明白,Z--以后是7呀,13+7只等于20.
所以以结果来想,Z--那个位置上的值只是8.而且我刚才删了Z--后面的那个“--”符号重新compile,结果是没有任何变化的,为什么?为什么前面x--里的“--”会发生作用,而后面z--位置上的“--”不发生作用?
2011-06-22 21:12
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
z-- 先返回 z 的值,然后使 z 自减 1
2011-06-22 21:16
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 7楼 voidx
谢谢,已经明白了。其实还只是纠结于为什么前面括号里(x--,y++,x+y)中的自减1或自加1的符号会发生作用,而且后面z--中的自减1符号不发生作用?
2011-06-22 21:22
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
这楼主很有心呢,我也来答一下,为什么前面括号里(x--,y++,x+y)中的自减1或自加1的符号会发生作用,而且后面z--中的自减1符号不发生作用?

首先希望你能明白一个原则:拿自增运算符号来说吧,虽然i++和++i执行后i的值都加1了,但是这个表达式的值却不是i的值。i++作为一个表达式,该表达式的值为变量i没有增加1之前的值,而++i的值为变量i增加1之后的值。
 
(x--,y++,x+y)中的三个式子依次运行,结果是13很好理解了。后边的z--这个式子的值是z减1之前i的值,所以还是8.
2011-06-23 17:02
快速回复:这个程序为什么运行结果是21?
数据加载中...
 
   



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

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