请教一个C语言中的问题。

Lucid Lynx (长期支持)
回复
头像
bokuno
帖子: 177
注册时间: 2009-05-10 22:18
系统: Slax Linux
送出感谢: 0
接收感谢: 4 次

请教一个C语言中的问题。

#1

帖子 bokuno » 2010-07-29 22:35

如下:a=5;b=5;p=(a++)+(a++)+(a++);q=(++b)+(++b)+(++b);在Gcc下编译运行后的结果是:p=15,q=22,这是为什么,希望高手能解释一下。谢谢!
Using Slax Linux.
With KDE Desktop, Konqueror browser.
wangjun403
帖子: 433
注册时间: 2009-07-06 14:26
送出感谢: 2 次
接收感谢: 1 次

Re: 请教一个C语言中的问题。

#2

帖子 wangjun403 » 2010-07-29 22:55

这种问题没有任何意义
生命只不过是上帝借你一用的资本!
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#3

帖子 dshbusiness » 2010-07-29 23:31

没有意义,如果你是想理解编译器原理,那可以告诉你这跟编译器翻译表达式有关,前缀、中缀、后缀表达式可能会有不同的结果。
如果你敢在工作中这么写代码……迟早被炒……
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: 请教一个C语言中的问题。

#4

帖子 BigSnake.NET » 2010-07-29 23:48

一般来说
p 可能是 15 16 17 18
q 可能是 21 22 23 24 ...
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
自由建客
论坛版主
帖子: 13427
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: 请教一个C语言中的问题。

#5

帖子 自由建客 » 2010-07-30 1:27

无聊!睡觉!
头像
pocoyo
论坛版主
帖子: 25878
注册时间: 2008-03-25 15:49
来自: 谁知道?
送出感谢: 5 次
接收感谢: 9 次
联系:

Re: 请教一个C语言中的问题。

#6

帖子 pocoyo » 2010-07-30 6:05

不纠结
Mr innocent
帖子: 20
注册时间: 2010-07-14 13:32
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#7

帖子 Mr innocent » 2010-07-30 16:36

难理解的么 可能是不同的编译结果也可能不同吧
头像
kevin_2009
帖子: 496
注册时间: 2009-10-06 14:44
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#8

帖子 kevin_2009 » 2010-07-30 17:41

不懂C语言,q为什么等21.22.23.24呢。怎么算出来的啊,不解???
ubuntu论坛就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光,一瞬间就让我如饮甘露,让我明白了永恒的真理在这个世界上是真实存在着的.
CRAZY_PALADIN
帖子: 302
注册时间: 2009-07-04 16:18
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#9

帖子 CRAZY_PALADIN » 2010-07-31 0:16

确实非常没意思,这玩意估计也就会出现在C语言习题集之类的东西里。
不同的编译器肯定会有不同的结果
Freedom is the power to decide what your computer does, and the only way to have this freedom is to know what your computer is
doing. Freedom is a computer that is without secrets, one where everything can be known if you care enough to find out.
Mr innocent
帖子: 20
注册时间: 2010-07-14 13:32
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#10

帖子 Mr innocent » 2010-07-31 1:13

我看了书上说的 有的编译器是从左往右 有的是从右往左 所以lz也不要太纠结 明天我再看看 清华大学出版社的 把原文打上去给你看 :em04
Mr innocent
帖子: 20
注册时间: 2010-07-14 13:32
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#11

帖子 Mr innocent » 2010-07-31 12:19

c程序设计第三版 谭浩强 清华大学出版社 p58 内容是这样子的 :em09
如 i的值为3 有以下表达式
(i++)+(i++)+(i++)
表达式的值是多少呢?有的系统按照自左而右求解括号内的运算,求完第一个括号的值后,实现i的自加,i值变为4.在球第二个括号的值 结果是3+4+5 而另一些系统 如 turboC 和ms C 把3作为表达式重所有i的值 因此3个i相加 得到表达式的值为3+3+3 在求出整个表达式的值后再实现i的自加3次 得到i=6.所以应该尽量避免那种表达式
你自己去理解吧 :em20 我也有点头晕呢 :em20 :em20 :em20
头像
bokuno
帖子: 177
注册时间: 2009-05-10 22:18
系统: Slax Linux
送出感谢: 0
接收感谢: 4 次

Re: 请教一个C语言中的问题。

#12

帖子 bokuno » 2010-08-01 19:38

Mr innocent 写了:c程序设计第三版 谭浩强 清华大学出版社 p58 内容是这样子的 :em09
如 i的值为3 有以下表达式
(i++)+(i++)+(i++)
表达式的值是多少呢?有的系统按照自左而右求解括号内的运算,求完第一个括号的值后,实现i的自加,i值变为4.在球第二个括号的值 结果是3+4+5 而另一些系统 如 turboC 和ms C 把3作为表达式重所有i的值 因此3个i相加 得到表达式的值为3+3+3 在求出整个表达式的值后再实现i的自加3次 得到i=6.所以应该尽量避免那种表达式
你自己去理解吧 :em20 我也有点头晕呢 :em20 :em20 :em20
:em01 :em01 :em01
谢谢你的回答!
:em11 :em11 :em11
Using Slax Linux.
With KDE Desktop, Konqueror browser.
xiilin
帖子: 8
注册时间: 2010-08-01 16:55
送出感谢: 0
接收感谢: 0

Re: 请教一个C语言中的问题。

#13

帖子 xiilin » 2010-08-01 19:58

貌似我初学C语言时也问过这么无聊的问题,呵呵。

如果lz对这个问题很感兴趣的话,去学习汇编语言,然后调试你的程序,你就明白为什么会得到这个结果了。
头像
nuanhuai
帖子: 7810
注册时间: 2009-03-10 13:04
送出感谢: 1 次
接收感谢: 0

Re: 请教一个C语言中的问题。

#14

帖子 nuanhuai » 2010-08-01 21:25

老老实实写出傻子都能看懂的代码就好,工作就这样
至于为啥,上面都说了
回复

回到 “Ubuntu 10.04 LTS”