C语言的细节问题
来源:互联网 发布:国防军事大数据案例 编辑:程序博客网 时间:2024/04/27 23:16
- 用宏定义实现比较两个数的大小
#define max(a, b)(((long)((a)- (b))&0x80000000) ? b : a)//即a>=b时返回a, 否则返回b
- C语言有几个宏定义是大家需要掌握的:
__FILE__包含当前文件名的字符串
__LINE__表示当前行号的整数
__DATA__包含当前日期的字符串
__STDC__如果编译器遵循 ANSI C标准,他就是个非零值
__TIME__包含当前时间的字符串
注意:以上宏单词的两边各两个下划线
- //以下代码是错误的
用数组的访问形式来修改字符串常量,显然是错误的。会提示段错误。
char *p = "abcdef";
p[1] = 'm';
printf("%s\n", p);
- /*
野指针的成因主要有三种:
1、指针变量没有被初始化。任何指针变量在被创建时不会被自动成为NULL指针,它的缺省值是随机值,会随便指向一个地方
2、指针p被free或者delete后,没有被置为NULL,让人误以为p是个合法的指针。
3、指针操作超越了变量的作用范围。比如不要返回指向栈内存的指针或者引用,因为栈内存在函数结束时会被释放
*/
//以下代码的指针p还没有被初始化,因此为野指针。执行*p = a;时会出现运行时异常,即提示段错误。此外在编译时也会出现警告,提示p没有初始化
int *p;
int a = 10;
*p = a;
printf("%d", *p);
- //打印的结果为1
//由此推断C语言逻辑运算的结果为0或者1
printf("%d", 5&&6);
printf("%d", 2 > 1);
- 算术运算符的优先级(+ - * / %) > 移位运算符的优先级(>> <<) > 关系运算符的优先级(> >= < <= == !=) > 按位运算符的优先级(& | ^)
> 逻辑运算符的优先级 > 条件运算符的优先级 > 赋值运算符的优先级 > 逗号运算符的优先级
- #pragma pack(4)//指定对齐方式为4字节对齐
- 关于sizeof的介绍
1、sizeof是一个运算符而不是一个函数
2、sizeof(数据类型)或者sizeof(变量名或者常量)都正确。即sizeof(表达式),表达式可以是变量名、常量、数据类型名
3、sizeof 变量名是正确的,但是sizeof 类型名是错误的。即sizeof后如果不加括号的话,只能跟变量名。如果直接跟类型名而不加括号,会编译错误。
4、sizeof(数组名)会得到数组所占的字节数。
- 取模运算符%
1、功能是数学上的求余数运算
2、其两个操作数对象都必须是整数
3、a%b 结果的符号以a的符号为准。例如-5%3=-2 5%(-3)= 2
- C语言的细节问题
- C语言细节问题
- C语言的细节!
- C语言 指针要注意的一些细节问题
- C 语言的一些细节
- C语言的typedef 细节
- C语言学习--一些细节问题
- c的一些细节问题
- C语言学习中遗漏的细节
- c语言注意的小细节
- C语言的细节(不定期更新)
- C语言的一些细节总结
- 关于C语言的几个细节
- C语言的一些琐碎细节备忘
- C语言预处理#运算符的细节
- c语言的一些小细节
- C语言的细节(一)
- 关于c语言static的一些细节
- wayland helloworld (二) 之Wayland鼠标消息
- jquery datatable 参数
- 【TED演讲】邦克·罗伊:从赤脚运动中学习
- 屏幕输出VS文件输出
- Block(1)
- C语言的细节问题
- 弥补空缺!HappyFox面向iOS开发者发布开源移动HelpDesk SDK
- Android小游戏应用---撕破美女衣服游戏
- 我2014年的任务
- 猫都能学会的Unity3D Shader入门指南(二)
- RDD专题
- OCP 1Z0 051 38
- iBATIS概论+ORM模型介绍
- Android小应用----图片的拖动、缩放