C语言里的一些陷阱
来源:互联网 发布:八音盒音乐制作软件 编辑:程序博客网 时间:2024/06/07 00:54
每一种语言都会有很多“陷阱”,c语言也不例外。这里我每次遇到的时候就补充一下,以期不断提升自己的水平。
语法方面的
1.结构体是可以赋值的,但是不能比较(这里说的主要是==操作,可以用memcpy来判断)。
2.register变量最好用于局部变量。(tcc可以用于全局变量,gcc需要指定,不过一般都不用指定寄存器变量了)
3.i++不能作为左值,++i可以。(标准库里有不少*des ++ = * src ++的语句,其实++优先级比*高,最终还是对*(s)赋值。)
4.结构体指针可以在任意位置声明,结构体变量必须在定义结构体之后声明。
5.long类型长度不定,根据C程序设计语言一书,int则根据机器位16位或者32位,long类型至少为32位,所以64位整型需要使用 long long,类似的还有double,double至少为32位,不同的是大部分编译器double默认64位
6.函数调用顺序不可控,比如foo(a(), b()),C语言标准中是没有定义a和b执行的顺序的,而是由编译器自行决定
标准库函数方面
1.fputc:在windows下面,使用fputc(10,fp);的时候,写入文件的并不是10,而是13 10,就是windows下的换行符\r\n。
2.realloc(void*,int,int):重新分配后的内存大小不能小于之前的内存大小。
0 0
- C语言里的一些陷阱
- c语言题中的一些陷阱
- c语言题中的一些陷阱
- 【C】c语言里常见的一些错误用法!!!!
- c语言里一些常用的预编译指令
- C语言实验里用的一些时间函数
- 读《C语言陷阱与缺陷》一书后的一些注意事项
- c语言中时间陷阱的实现
- 再看c语言的缺陷与陷阱
- C语言的陷阱与缺陷
- C语言中define的陷阱
- C语言中size_t的陷阱
- 一个C语言的浮点陷阱
- 一个C语言的浮点陷阱
- c语言的陷阱与缺陷小记
- c语言的一处陷阱:
- c语言的一处陷阱
- C语言陷阱---指针的误用
- 九度OnlineJudge题目1201:二叉排序树
- Android开发中adb命令的常用方法
- java自动装箱拆箱深入剖析
- Java中的多线程(四)之线程的停止
- 95. 二进制数
- C语言里的一些陷阱
- Linux 查看CPU信息、机器型号等硬件信息
- Linux基础之标准输入和输出
- Ubuntu+Nginx+PHP的最简搭建方法
- PHPCMS发帖统计小记
- 学习
- 走出“温室”的花朵更加美丽健壮
- vi命令使用大全
- 学习OC必备的C基础2