C语言需要注意的地方

今天看了一本C陷阱与指针的书,从中挑选了一些我自己平常不太注意的地方,或者有些是记不太清的东西,稍微整理了下有以下这些地方:
1:=与==是不同的,一个是赋值,一个是比较
2:&与&&是不同的,前者是按位与,后者是逻辑与,理解2&1和2&&1的结果
3:整形常量第一个字符是0,则代表8进制,0195这个理解成141(十进制),0215(八进制)。
4:‘’中的字符代表一个整数,“”代表指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制为0的字符‘\0’初始化。
5:a+++++b的含义(a++)+(++b)若根据贪心法,((a++)++)+b,但语法上a++不能做左值。
6:float g():()优先级大于,则g()函数返回一个浮点型指针;
7:(*fp)():*fp是该指针指向的函数,(*fp)()是调用该函数的方法;void(*fp)():代表fp是一个返回值为void类型的函数的指针;
8:((void()())0)():里面(void(*)())0将常数0转换成指向返回值为void的函数的指针类型,整式就是调用首地址为0位置的子函数。
9:算术运算符>移位运算符>关系运算符>逻辑运算符。赋值运算符<条件运算符。
10:声明的后面要有分号,包括结构体,类定义;
11:当数组作为参数时,实际上是数组的第一个元素作为了参数。
12:编译器保证由0转换而来的指针不等于任何有效的指针,决不能使用该指针所指向的内存中存储的内容。
13:有符号整型相加可能会溢出,稳妥的是转换成无符号数。
14:static修饰符把变量的作用域限制在一个源文件中,对其他源文件不可见。
15:fread()和fwrite()之间要有fseek才可以进行交叉读写。
16:FILELINE是内建于C语言处理器中的宏,它们会被扩展为所在文件的文件名和所在代码行的行号。
17:assert的参数是一个表达式,若表达式为0,就使程序终止执行,并给出一条适当的出错

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值