评《C和C#标准是不一样的》


所有跟贴·加跟贴·新语丝读书论坛

送交者: eng 于 2009-03-19, 21:05:42:

看了这篇文章之后很是诧异。短短三段话,错误一大堆。以下是我的评论:

1、C和C#是两个完全不同的语言。除了语法看起来有点像之外,没有任何可比性。谭的书可是讲的C语言,勉强把C++拿来说说也罢,C#是怎么冒出来的?

2、1999年的C标准(实际上是ISO C而不是ANSI C,通常称之为C99)实际上是C语言“最新”的标准,而不是什么“古老的东西”。而且在网上最多只能找到这个标准的草稿。毕竟人家ISO要拿来卖的。

3、事实上,最容易获得的是C89。这是因为C89已经包含在C语言的“圣经”,K&R第二版里面了。这本书就算是正版价格也不贵,相信张云楼老师还是买得起的。

4、目前C标准只有三个版本,C89、C90以及C99。没有哪一个标准允许switch带非整数参数(注意是整数不是整型)。不管是什么标准,找个C编译器(如谭师傅推荐的古董TC)试试不就好了?最好的莫过gcc,因为用它编译时可以指定用哪一版本的标准。

5、从g3like列出的C#中switch可以接受的类型来看,除了string,其它也都可以表达为整数。如果可以相信这个列表是完整的,那么就算是在C#里switch也不能接受“任何类型”吧?“也许是正确的”这样的诊断从何而来?

6、实事上,C语言的switch可以接受的类型除了整型、字符型和枚举型以外,还包括短整型、长整型、长长整型,以及所有这些的有符号和无符号的类型。也就是说,g3like列出的C#接受类型中,只有string是C语言里没有的类型以外,其它的相对应的C类型都可以被C语言的switch接受。

7、C++里面的switch也同样不能接受整数类型以外的类型。





所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明