- 论坛徽章:
- 0
|
应某出版社之约,拟就国内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 编译器应该做的。
它认为,这条语句可能存在“人为方面”造成“结果”的不确定性
这条表达式就错误了?- char *p = NULL;
- *p = 'a';
复制代码 不知道,这两条语句对你来说是不是“错误”的
你是不是,一定要让 编译器提你个提示: *p = 'a'; 这是错误的
很可惜
即使: gcc -Wall xx.c
gcc 都不会给你提示错误
再一次保证:如果,你敢出书,肯定被批死。
就你这个水平,这个文字能力  |
|