论坛: 编程破解 标题: 一个很菜的问题!!!!! 复制本贴地址    
作者: bluepluto [mmgg00]    论坛用户   登录
c语言

已知i=4,k=(i++)+(i++)+(i++)
求此时i=? k=?
能解释一下吗??
谢谢了

地主 发表时间: 12/12 18:44

回复: napolun [napolun]   版主   登录
先说I,I刚开始为4,然后i++,成为5,然后i++,变成6,再一次i++,变成7(好累呀)。所以i最后为7。那么k呢?因为i++是先使用i的值,再执行i+1,所以k为4+5+6=15。

B1层 发表时间: 12/12 21:33

回复: mimido [mimido]   论坛用户   登录
我也同意 呵呵

B2层 发表时间: 12/13 19:41

回复: bluepluto [mmgg00]   论坛用户   登录
thank you!

B3层 发表时间: 12/15 18:39

回复: 山鸡 [duck_chen]   论坛用户   登录
但是你们都错了,K的值是18,你们难道都没注意(i++)是有括号的吗?所以第一次(i++)为5,第二次为6,第三次为7。

B4层 发表时间: 12/16 19:55

回复: bluepluto [mmgg00]   论坛用户   登录
恩?
到底什么结果才是正确的呢?
我倒是同意最后一个答案18
有没有人能说确切写呢?

B5层 发表时间: 12/17 16:49

回复: syshunter [syshunter]   版主   登录
对与否,没必要浪费这个时间,自己调试下,什么都明白了

B6层 发表时间: 12/17 18:26

回复: napolun [napolun]   版主   登录
老大英明,我调试了一下,发现i=7,k=12,才发现TC中,它先把i的原值提出来,作为表达式i的值,自加3次,为12。
要不是老大,我会一直错下去,谢谢。

B7层 发表时间: 12/17 21:28

回复: dddd [dddd]   论坛用户   登录
同意!!
k=(i++)+(i++)+(i++)中k的值是先将i提取出来相加的结果12
然后i=7

如果k=(++i)+(++i)+(++i),那么就是先算出i=7,然后k=7+7+7=21

以上在tc2.0通过

[此贴被 dddd(dddd) 在 12月17日21时53分 编辑过]

B8层 发表时间: 2002-12-17 21:57:53

回复: ricky [ricky]   版主   登录
c语言的编译器本来就不是很严格,所以对于这种情况,不同的人有不同的理解,不同的编译器会有不同的结果
我奉劝楼顶的朋友,不要把时间浪费再这种文字游戏上,如果你觉得可能会有歧义的话,我建议你写得清楚一点,不要冒这个险。
我发现和多朋友学语言总是过于侧重对于类似的问题的钻研,好像知道茴香豆的茴的4种写法,才是真正的高人,这个可能和老师爱出这类的题有关。
其实,语言是一种工具,让你去实现你的目标,只要知道一种正确的方式,足矣。
对了,lcc下i = 7, k = 15;

B9层 发表时间: 12/18 08:46

回复: bluepluto [mmgg00]   论坛用户   登录
谢谢老实和尚的劝告


B10层 发表时间: 12/19 18:38

回复: shadow [shadow0516]   论坛用户   登录
班竹果然厉害

B11层 发表时间: 12/19 19:44

回复: imstone [imstone]   论坛用户   登录
呵呵~

B12层 发表时间: 12/23 11:30

回复: wjhwjh5 [wjhwjh5]   论坛用户   登录
谢谢老实和尚的劝告
但是那些出题的家伙总喜欢用这些耀炫他们的无知.真不知是什么样心态.

B13层 发表时间: 02/22 01:41

回复: changfeng [changfeng]   论坛用户   登录
别人是要考级,这不注意那不注意,怎么拿分数,你这不是误人子弟吗?
如果有能力的话,把不同编译器的不同结果,都列出来
老实和尚,别站者茅坑不拉屎。

B14层 发表时间: 02/22 13:20

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号