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

C陷阱与缺陷-笔记-1

2017-03-04 11:01 218 查看
第一章 词法分析

1.1关于“=”和“==”的区别

主要问题在于这两个运算符在if的条件语句中出现时的问题。

解决:如果if的条件中需要“=”赋值语句,则显式表达该语句的意思。比如判断赋值后的值是否为0,可以if( ( variable = function() ) != 0 ).

1.2 “&”和“&&”,“|”和“||”

基本就是错写的问题。含义不同。

1.3 词法分析的问题

词法分析有“贪心”的特点,即尽可能多地读入一个字符,因此可能读入的内容与程序猿想表达的内容不同。比如x除以p所指向的内容再赋值给y,写成y=x/*p,但“/*”会被当作一个字符,这时如果后面有注释语句“*/”,程序就不会报错,而只将x赋值给y。

解决:1.不同符号之间用空格隔开,这样可以避免歧义。2.显式使用括号表达操作符的运算顺序。

1.4第一个字符是0的整型常量会被当作八进制数

解决:别这么干。

1.5 字符与字符串

单引号和双引号的使用问题。单引号引起的一个字符实际上代表一个整数,决定于编译器使用的字符集。双引号引起的是字符串加‘\0’。

解决:记得字符串用双引号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 陷阱与缺陷