1、词法陷阱
时间:2010-04-11 来源:280552108
1、= 不同于 ==
= 赋值符号,
a = b; //把b的值赋给a,结果返回a的值。
== 逻辑比较符号, a == b; //判断a与b的值是否相等, 结果返回布尔类型的值。 2、&和| 不同于 &&和|| &和| 按位运算符 &&和|| 逻辑运算符 3、贪心法 每一个符号应该包含尽可能多的的字符。 即, 编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入, 如果该字符可能组成一个符号,那么再读入下一个字符, 判断已经读入的两个字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断, 直到读入的字符串已不再可能组成一个有意义的符号。 ------ 贪心法 符号中间不能嵌有空白(空格符、制表符和换行符)。 例: a ---- b 与 a -- - b 相同, 而与 a - -- b 不同 y = x/*p 代表 y = x , 而 /*p 被视为注释的一部分 4、整型常量 如果一个整型常量的第一个字符是数字0, 那么该常量将被视作八进制数。 10 代表十进制的 10 010 代表八进制的 10 = 8(十进制) 5、字符与字符串 用单引号引起的一个字符实际上代表一个整数, 整数值对应于该字符在编译器采用的字符集中的序列值。 用双引号引起的字符串, 代表的却是一个指向无名数组起始字符的指针, 该数组被双引号之间的字符以及一个额外的二进制值为零的字符‘\0’初始化。 例: printf("hello world\n"); 与 char hello[] = {'h','e','l','l','o',' ','w','o','r','l','d','\n',0}; printf(hello); 是等效的。
== 逻辑比较符号, a == b; //判断a与b的值是否相等, 结果返回布尔类型的值。 2、&和| 不同于 &&和|| &和| 按位运算符 &&和|| 逻辑运算符 3、贪心法 每一个符号应该包含尽可能多的的字符。 即, 编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入, 如果该字符可能组成一个符号,那么再读入下一个字符, 判断已经读入的两个字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断, 直到读入的字符串已不再可能组成一个有意义的符号。 ------ 贪心法 符号中间不能嵌有空白(空格符、制表符和换行符)。 例: a ---- b 与 a -- - b 相同, 而与 a - -- b 不同 y = x/*p 代表 y = x , 而 /*p 被视为注释的一部分 4、整型常量 如果一个整型常量的第一个字符是数字0, 那么该常量将被视作八进制数。 10 代表十进制的 10 010 代表八进制的 10 = 8(十进制) 5、字符与字符串 用单引号引起的一个字符实际上代表一个整数, 整数值对应于该字符在编译器采用的字符集中的序列值。 用双引号引起的字符串, 代表的却是一个指向无名数组起始字符的指针, 该数组被双引号之间的字符以及一个额外的二进制值为零的字符‘\0’初始化。 例: printf("hello world\n"); 与 char hello[] = {'h','e','l','l','o',' ','w','o','r','l','d','\n',0}; printf(hello); 是等效的。
相关阅读 更多 +