免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 以其昏昏,使人昭昭? [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
81 [报告]
发表于 2010-04-08 19:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
82 [报告]
发表于 2010-04-08 23:39 |只看该作者
本帖最后由 cheng_lai_shun 于 2010-04-08 23:42 编辑

国内的计算机书(特别是翻译过来的)不是传播知识而是纯经济利益,当然并不是说老谭是这样的


记得大学一老师为了买车买房出书

论坛徽章:
0
83 [报告]
发表于 2010-04-09 00:47 |只看该作者
应某出版社之约,拟就国内C语言“主流教材”中的错误、误导和不良风格等写点东西。
    在正式动笔之前和大 ...
p64,《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月第3版,2009年10月第26次印刷

:“a+=a-=a*a”这个表达式本身就是错误的,怎么居然还能分析出求解步骤呢?



国内确实有很多垃圾的人。

就像你这类人。


:“a+=a-=a*a”这个表达式本身就是错误的,怎么居然还能分析出求解步骤呢?

>> 丫 的

  凭什么你说它是错误的“表达式”? 懂不懂什么叫“表达式”


     +=, -=, *=,  /=,  %=: 这些二元操作符,只要符合 left operand 是 lvalue,那么这个表达式就是合法的。

  这是 C A reference Manual 里面的表述。

  难道 a 不是 lvalue ? 还是你想推翻这些权威书籍,如果你想推翻,再学多三十年吧。

  最重要的是学好语文,提高语文水平。

  就你这个水平,还想来咬文嚼字抓别人的漏洞。


我敢保证:如果,你敢出书,肯定被人批死




因为C的编译器一向只对违背Constraints的代码报错,而对那些“似是而非”的错误一般只给出警告,这是C一贯的风格
比如
int i;
scanf ("%d",i);
我相信C的编译器也只是给出警告而已,不会报错。尽管我们都知道那的确错了
  

>> 丫 的,又来 YY

scanf() 函数的原型是:

int scanf(const char *format, ...);

凭什么 c 编译器要帮你判断第 2 个参数是不是合法的? 函数原型的第2个参数并不需要类型

c 编译器凭什么要认为这条代码是错误的?


你还:“尽管我们都知道那的确错了”


这条语句在“语法”上是合法的,但在“语义”上却是错误的,在“逻辑”上是错误的。


你却想要c 编译器对“语法”上是合法的语句做出错误判断



什么叫做“语法”,什么叫做“语义”,什么叫做“逻辑

你基本上是混为一谈。而你却来批判别人书中的语法毛病

十分的可笑。



我没用过gcc。如果gcc给出警告,说明gcc是进化得非常不错的编译器,而且和前面所说的“a+=a-=a*a”是错误代码的观点相互吻合


没用过 gcc 居然敢在 CU 论坛(这个号称国内最大的 unix/linux 论坛)上混,还大发谬论

你真行!


gcc 给出警告:只是做为一个稍为好点的 C 编译器应该做的。

它认为,这条语句可能存在“人为方面”造成“结果”的不确定性

这条表达式就错误了?
  1. char *p = NULL;

  2. *p = 'a';
复制代码
不知道,这两条语句对你来说是不是“错误”的

你是不是,一定要让 编译器提你个提示: *p = 'a'; 这是错误的

很可惜

即使: gcc -Wall xx.c   

gcc 都不会给你提示错误




再一次保证:如果,你敢出书,肯定被批死。


就你这个水平,这个文字能力

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
84 [报告]
发表于 2010-04-09 06:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
85 [报告]
发表于 2010-04-09 06:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
86 [报告]
发表于 2010-04-09 09:04 |只看该作者
回复 1# pmerofc


    该语法并没有错。
在ubuntu 9.10下,编写test.c:
int main() {
int a = 0;
int b = 0;

/**开始*/
a = 12;
b = 20;
a+=a-=a*a;
/**注释结束*/
printf("a=%d\tb=%d", a, b);

return 0;
}

zhouhh@zhh64:~$ gcc test.c
test.c: In function ‘main’:
test.c:10: warning: incompatible implicit declaration of built-in function ‘printf’
zhouhh@zhh64:~$ ./a.out
a=-264        b=20zhouhh@zhh64:~$
该语法能得到文中所述的结果。

论坛徽章:
0
87 [报告]
发表于 2010-04-09 09:05 |只看该作者
回复 87# ablo


    zhouhh@zhh64:~$ gcc --version
gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
zhouhh@zhh64:~$ uname -a
Linux zhh64 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 04:38:19 UTC 2010 x86_64 GNU/Linux
zhouhh@zhh64:~$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.10
DISTRIB_CODENAME=karmic
DISTRIB_DESCRIPTION="Ubuntu 9.10"

挑错的时候还是要实践一下的。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
88 [报告]
发表于 2010-04-09 09:12 |只看该作者
第一章 C语言概述 1.2 C语言的特点

p2,《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月 ...
pmerofc 发表于 2010-04-09 06:53



    C99有布尔型,就是他说的逻辑型吧

论坛徽章:
0
89 [报告]
发表于 2010-04-09 09:21 |只看该作者
顶楼主.我觉得教学一门语言,确实要注意教给学习者简单、明了、没有歧义的知识,以及规范的用法,让学习者知道怎样利用这门语言去实现我们的想法就行了,对于那些含糊不清的,学习的人如果自己有兴趣,大可以自己去测试。建议楼主也不要去批判这些书中的错误了,写出实用的学习教材来,我认为更重要。

论坛徽章:
0
90 [报告]
发表于 2010-04-09 09:23 |只看该作者
评:误导。C语言根本就没有逻辑“型”数据。况且数据类型和变量是正交的概念,“对变量的类型使用比较灵活”,难道对常量的类型使用就死板?“通用”这个说法更成问题
这个……lz针对这个问题,应该改成怎样的说法才会简洁而又不产生误导呢?
{:3_191:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP