C陷阱和缺陷-笔记

1.
&:按位操作符(“与”),将两个表达式的值按二进制位展开,对应的位(bit)按值进行”与”运算,结果保留在该位上。
&&:逻辑操作符(“与”),计算两个表达式同时成立的“真值”

2. 词法翻译“贪心法”
简单来说:每个字符应该包含更多的字符。
例:a---b与a-- -b相同,而与a- --b不同

3.
整型常量的第一个字符为0,代表八进制数。

4. 单引号和双引号
printf("a=%d ",a);
c语言中的单引号用来表示字符常量,双引号用来表示字符串常量。
比如’a’表示字符常量,在内存中占一个字节,’a’+1就表示’a’的ascii码+1,就是’b’。
比如”a”表示字符串常量,在内存中占两个字节,因为最后还有一个结束符号’’,”a”+1表示指针运算,结果就指向结束符’’。
本质上,单引号括起来的一个字符代表整数,双引号括起来的字符代表一个指针。
'A' == 65
'a' == 97
'0' == 48

5.typedef
typedef char* PCHAR;
PCHAR pa, pb;

6. 函数声明
a() 其实是 (*a)() 的简写方式
(*a)()中的a表示一个函数指针,整个表达式表示函数指针a所指向的函数

7. 运算符优先级
单目运算符是自右向左结合()
例: *p++ == *(p++)
优先级:算术运算符 > 移位 > 关系 > 逻辑

8. 悬挂'else'
else始终与同一括号内最近未匹配的if结合

原文地址:https://www.cnblogs.com/stellar/p/8358651.html