这本书很薄,看目录感觉讲的也很基础,估计能较快看完。算是开始阅读前阵子买的那波书的热身吧。
学过编译原理,我们应当了解,编译器的工作基本过程。在词法分析中,不同编译器的不同设定,会带来不同的问题。虽然很是细微,但是如果出错,可能编译器不提示,让人抓狂.
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中是报错的,而且吧,忒没意思,好好写好括号才是正道。