您的位置:首页 > 编程语言 > C语言/C++

C陷阱与缺陷 笔记

2014-12-22 15:49 148 查看
这本书很薄,看目录感觉讲的也很基础,估计能较快看完。算是开始阅读前阵子买的那波书的热身吧。

学过编译原理,我们应当了解,编译器的工作基本过程。在词法分析中,不同编译器的不同设定,会带来不同的问题。虽然很是细微,但是如果出错,可能编译器不提示,让人抓狂.

int a = 0195;
int b = 0215;
int c = 141;

cout << a << endl;
cout << b << endl;
cout << c << endl;


首先,编译是会报错的,第二,输出的 b 与 c 的值是相同的。因为C编译器默认,0开头的会被默认为八进制。故而错误在哪里,也是显而易见的,a中9超过八进制了。当然了,在平时的编程中,如果脑子没抽风的话,应该不会没事让int i = 01;

除此以外,之前在《程序员面试宝典》中也看到过这样一题:

if( 'A' == a )
if( a == 'A' )
这样两种表达方式,哪一种更好?

答案应当是前者(刮开有奖)。

因为如果你不小心手滑,把 == 写成了 = ,这种情况下编译器是不会报错的,因此产生的结果错误,你只能去调试了╮(╯▽╰)╭

另外,课后习题1-4,a+++++b这种表达方式在VS2010中是报错的,而且吧,忒没意思,好好写好括号才是正道。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CC++