《C陷阱与缺陷》笔记.docVIP

  • 2
  • 0
  • 约1.47万字
  • 约 14页
  • 2017-08-15 发布于安徽
  • 举报
?第1章 词法“陷阱”? 1.1 = 不同于 == == 为比较运算符, = 为赋值运算符 例:?while( c = || c == \t || c == \n ) ?? c = getc( f );??? 本意是c和 比较,但错用成赋值符。这样的后果是将 || c == \t || c == \n 这个表达式的值给了c, 而使c = 1。??? 同样: if ( ( filedesc == open( argv[i], 0 ) ) 0 ) error();??? open的返回值和filedesc比较的结果只能是0或1,所以,error没有机会调用。但是,此时filedesc的值于open返回值无关,编译器这里不会报错。容易被忽视,达不到检查效果。 1.2 和 | 不同于 和 || 和|均为按位运算符,而 和 || 均为逻辑运算符,不能混淆。 1.3 语法分析中的“贪心法” 当C编译器读入一个字符后又跟了一个字符,那么编译器就必须做出判断:是将其作为两个分别的符号对待,还是合起来作为一个符号对待。C语言对这个问题的解决方案可以归纳为一个很简单的规则:每一个符号应该包含尽可能多的字符。 a---b 与 a -- - b 的含义相同,而与 a - -- b 的含义不同。 1.4 整型常量 如果一个整形常量的第一个字符是数字0,那么该常量将被视

文档评论(0)

1亿VIP精品文档

相关文档