C陷阱与缺陷 笔记


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

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

        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中是报错的,而且吧,忒没意思,好好写好括号才是正道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值