原帖由 gooderfeng 于 2006-2-24 08:49 发表
是什么没关系,别这么写就还了。
谁这样写谁倒霉
原帖由 soul_of_moon 于 2006-2-24 08:51 发表
知道压栈和出栈吗?知道顺序就容易多了
c25.jpg (35.74 KB, 下载次数: 16)
原帖由 playingfly 于 2006-2-24 08:44 发表
结果得25 ,想不明白,为啥呢?
#include<stdio.h>
main()
{
int b,a=5;
b=(++a)*(--a);
printf("%d",b);
}
原帖由 cjaizss 于 2006-2-24 09:05 发表
这种代码在C语言标准里属于未定义
就是编译器编译成什么样的汇编码属于自己看着办
所以最好的办法就是不要去写这样的代码
原帖由 cjaizss 于 2006-2-24 09:16 发表
看该编译器的原则。
不同的编译器编译这一句的时候。可能会认为成
复制代码
- ++a;
- --a;
- b=a*a;
也有可能
复制代码
- tmp1=++a;
- tmp2=--a;
- b=tmp1*tmp2;
还有别的可能
以上都不违反标准
原帖由 net_robber 于 2006-2-24 09:21 发表
支持,呵呵,我还真测试了下,在不同平台下,呵呵
不过 Win下 CL 结果确实是25,哈哈
原帖由 soul_of_moon 于 2006-2-24 09:31 发表
刚才把帖删了,因为有一点没弄清,现在终于明白了,大家执行一下下面的程序,就知道了:
1.#include<stdio.h>
main()
{
int b,a=5;
b=((--a)*(--a))*(++a);
prin ...
原帖由 cjaizss 于 2006-2-24 09:43 发表
记得以前计算机二级考试里就出过类似的题目,让我很鄙视出题的人。
反正,这种代码无论从可读性角度还是可移植性角度出发都是很差的。
所以,最好的方法就是不要这么写程序。
套用我同学的话——如果在一个工程 ...
原帖由 playingfly 于 2006-2-24 09:42 发表
我这里结果都是
64,4
原帖由 soul_of_moon 于 2006-2-24 09:46 发表
不会吧,我这里是完全不同的三个值,难道真与CPU的调度有关?
原帖由 soul_of_moon 于 2006-2-24 09:46 发表
不会吧,我这里是完全不同的三个值,难道真与CPU的调度有关?
原帖由 songix 于 2006-2-24 10:06 发表
不同的编译器实现不同。
《C++ Gotchas》上面有这个问题的描述的。
原帖由 soul_of_moon 于 2006-2-24 10:21 发表
我去看一下。
原帖由 playingfly 于 2006-2-24 10:34 发表
有电子版的吗?
有的话 发一份给偶吧! 谢谢
playingfly@hotmail.com
原帖由 cjaizss 于 2006-2-24 10:37 发表
学习计算机一个最好的办法就是尽量多的使用一切可使用的资源,比方google.
这本书的电子版下载明明可以在google上搜到,为什么不搜呢?
http://www.newebug.com/ebook/c-cpp/1558.shtml
原帖由 cjaizss 于 2006-2-24 10:37 发表
学习计算机一个最好的办法就是尽量多的使用一切可使用的资源,比方google.
这本书的电子版下载明明可以在google上搜到,为什么不搜呢?
http://www.newebug.com/ebook/c-cpp/1558.shtml
原帖由 songix 于 2006-2-26 15:25 发表
书我传到这里了,自己去取吧。
http://www.itpub.net/showthread.php?s=&threadid=495894
原帖由 fedoracore4 于 2006-2-26 16:15 发表
我在windows下面用dev-cpp跑出来是36
原帖由 cjaizss 于 2006-2-24 09:43 发表
记得以前计算机二级考试里就出过类似的题目,让我很鄙视出题的人。
反正,这种代码无论从可读性角度还是可移植性角度出发都是很差的。
所以,最好的方法就是不要这么写程序。
套用我同学的话——如果在一个工程 ...
原帖由 sarahbrightman 于 2006-2-27 00:36 发表
那个兄台,我也想要一份,谢谢哦
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |