1. == 和 = 不同
== 比较运算符
= 赋值运算符 【优先级底,比 || 还低】
所以下面的代码有问题
点击(此处)折叠或打开
-
while(c=' ' || c=='\t' || c == '\n')
-
{
-
c = gets(f)
-
}
上面的代码相当于 c = (' ' || c == '\t' || c == '\n') , 始终为真
2. && 和 & 不同, || 和 | 也不同
&& 和 || 都是逻辑运算符
& 和 | 是安位运算符
3. C 语言的词法分析 的贪心原则
a. a---b 和 a -- -b 相同, 而和 a - --b 不同
b. c = x/*p /*p*/ && c = x/ *p /*p*/ 不同 ,因为前一个 /*p 看做是注释,后一个*p只的p指向的值
4. 字符和字符串
'a' 和 “a" 不同
’a‘ 表示的是一个字符,和整数值 97相同
“a", 表示的一个字符串,在内存中的形式是 a\0
'yes' 没有明确的定义,视编译器而定,有些返回的是'y',有些是's'
5. 嵌套注释
有些编译器允许嵌套注释,有些不允许
-
#include <stdio.h>
-
#define A /* aaa /* a*/ a
-
#define B */
-
int main()
-
{
-
int a = 3;
-
int b = 4;
-
int c = a---b;
-
int x = 8;
-
int *p = &b;
-
printf(\"%d\\t%d\\t%d\\n\",a,b,c);
-
a = 3;
-
b = 4;
-
c = a - --b;
-
printf(\"%d\\t%d\\t%d\\n\",a,b,c);
-
c = x/*p /*p*/;
-
printf(\"%d\\t%d\\t%d\\n\",c,x,*p);
-
c = x/ *p /*p*/;
-
printf(\"%d\\t%d\\t%d\\n\",c,x,*p);
-
#ifdef B
-
printf(\"abc\\n\");
-
#else
-
printf(\"def\\n\");
-
#endif
-
return 0;
-
}
程序的输出时:
2 4 -1
3 3 0
8 8 3
2 8 3
abc
阅读(455) | 评论(0) | 转发(0) |