第一章

c陷阱与缺陷的读后总结
第一章 关于词法“陷阱”(主要讲符号和组成符号的字符间的关系以及一些常见错误)
新定义
符号:是指程序的一个基本组成单元,其作用相当于一个句子中的单词。

1.1 =不同于==
在c语言中,=代表赋值符号,而==代表比较符号。在写程序时,要格外注意以防误用。
例如:要表示(x==3)但是却误写成了(x=3)

解决方法是 用(3==x)代替(x==3)
在赋值操作时,编译器不允许左值为常量。

1.2 &和|不同于&&和||
前者是位操作运算符,而后者是逻辑运算符。

1.3 词法分析中的贪心法
翻译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入一个下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有意义的符号。

此处在写程序时要避免二义性例如a---b(y=x/*p)
前者所代表的含义是(a--)-b,而后者会把/*作为注释的开始。

解决方案两种:
第一种是将*p加括号;
第二种则是在符号中间加空格符 如:y = x / *p
(此处解释为:除了字符串与字符常量,符号的中间不能嵌有空白(空格符、制表符和换行符)。

1.4 字符与字符串
c语言中用单引号引起的一个字符实际上代表一个整数。
而用双引号引起的字符串,代表的确是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制为零的字符'\0'初始化。

第一章到此结束!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,971评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,293评论 0 10
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,157评论 0 3
  • 第一周,第二天,学习了 if.....else 语句 unsigned(无符号型,整型) char,字符型,%c ...
    涯ya阅读 1,153评论 0 0
  • DES算法 原理 1.64位密钥(56位有效位与8位奇偶校验位)与64位明文2.64位明文进行初始置换(初始置换表...
    掩掩阅读 1,103评论 0 0

友情链接更多精彩内容