C语言十分令人不解的...?(100分)

  • 主题发起人 主题发起人 张利中
  • 开始时间 开始时间
hehe,很正常,tc处理表达式和函数的参数方式不一样,你看
1)
i=1;
k=i+++++i;
printf("%d",k);
2)
i=1;
printf("%d",i+++++i);
-------------------------------------------------
结果就不一样,初级程序员搞不清楚,中级程序员会写出一些难以维护的东西
这就是灵活的代价
 
to sonie:

问题恰恰在这里,谭XX的书没人关心,可是这么多编译器的结果你不能不承认,
现在为止没有证据证明“正确”结果是30,你的一家之言不能成为判断编译器正误的标准。
这可不是什么学术流派的问题,因为照你的逻辑,所有的编译器都错了,这可乖乖的不得了。
因此,你必须正视现实,正确答案就只能是25,这是C语言的副作用,确认无疑。
你所说的“不管是怎么样都应该当作
a=x+1;
b=x-1;
y=a*b;”
在其他一切语言里面都对,也就是我说的“正常人的逻辑”,但是就是不能用于C语言。
如果你竟然用这一点来为C语言辩护的话,恐为C语言的支持者亦不许也! :-))

to beta:
你大概没搞明白吧?我们一直就是在说这个问题...也就是我所说的,“宁愿承认Borland编译器有错...”
 
说实话,我对 C / C++ 里的 ++ -- 操作最为头疼:操作数直接发生变化而不管有没有
返回值。所以为了不找麻烦,我使用 x++ x-- 时都要单独使用。在稍微复杂的表达式中,
绝对只使用 x + 1、x - 1 的形式,然后由编译器来优化。
别的语言没有这个问题很大程度上是因为没有这样一个特殊的操作符。Pascal 的 INC、
DEC 使用的是函数形式,没有这种问题。
这个操作符从逻辑上就难以理解。相信 ANSI 内部也曾经因此而混乱无比……
 
C语言是优秀的,之所以优秀是因为它的高效。但以严谨而论比不上PASCAL,但是编程不是编书,
做程序当然需要高效(一般而言),所以PASCAL才是一种教学语言,而C却是一种实用语言,这
也不难理解为什么大多数的操作系统的源码是用C语言,可能有人说汇编更高效,但这是执行的
高效,如果你不愿为了编一个简单的窗体去输入至少1000行代码的话,我相信你不会选择ASM。
随意高效的定义也包括编程的速度上,DELPHI现在流行的一个主要原因也是它的高效,所以说,
语言的高效性是至关重要的。C语言的编译器很多,不同的编译器规则不一样,所以相同的程序
在不同编译器下产生的机器代码也不同,也因此会有偏差,这是编译器的错误,或者说是做的不
够完美,温柔一刀仅以此就敢断言:“C语言确实不怎么样”是不是太武断了!现在我拿PASCAL的
程序到LINUX下执行结果出现错误,因此我就说“PASCAL实在是太差”,请问温柔一刀可以接受吗?
我想二者之间不应该是充分条件吧!
 
>>现在我拿PASCAL的程序到LINUX下执行结果出现错误,因此我就说“PASCAL实在是太差”,请问温柔一刀可以接受吗?
长个脑子的人都知道这话多么的荒唐,看来你又“进入状态”了,我还是撤吧!免得又开战...

(email通知已撤销 -- 眼不见心不烦...)
 
tcc -S 可以生成汇编代码
 
算了,算了,张利中老大结束讨论吧。不然非得火并不可。
 
是啊,只有温柔一刀是有脑子的人,我们都是行尸走肉,跟本不配与温柔一刀讨论问题,因为
在讨论之前结果就已经定了,温柔一刀永远是对的,对于我们这些没脑子的人要参加讨论实在
是不再量力!徒然浪费大家的时间。
 
faint... 非但不结束还把问题提前了。什么居心,简直是岳不群。
 
感谢各位的热情执教,特别感谢mikedeakins,可以结束本次讨论!
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
670
import
I
后退
顶部