1. 一般赋值语句
& 按位与 对应的具体的数
&& 逻辑与 0 或1
|| 逻辑或 0 或1
三目运算符 有时可以代替条件判断 if / else / else if
2. C++域操作符
同名时:局部变量优先调用
C++ 中通过域操作符“:: ”来直接操作全局变量
3. i++和++i的区别
i++ 先使用i的值进行运算,再把i自增1
++ i 先把i自增1 ,再使用i的值进行运算
4. i++和++i哪个效率更高
1 、考虑内建数据类型时,效率差别不大( 去除编译器优化的影响)
2 、考虑自定义数据类型( 主要是指类) 的情况时
前缀式可以返回对象的引用,而后缀式必须返回对象的值,所以导致在大对象的时候产生的较大的复制开销,引起效率降低
因此,处理使用自定义类型( 注意不是指内建类型) 的时候,应该尽可能地使用前缀式( ++ i, -- i) 递增递减
总结:
内建数据类型的情况,效率没有区别
自定义数据类型的时候,前缀式递增递减效率较高
5. 选择编程风格良好的条件比较语句
布尔变量的名称为flag
if ( flag)
if ( ! flag)
整型变量的名字为value
if ( value == 0 )
if ( value != 0 )
float 、double 有精度限制,设法转化成">=" "<=" 形式; 判断x与0.0 是否相同
if ( ( X >= - EPS) && ( X <= EPS) )
if ( ( X > EPS) || ( X < - EPS) )
指针变量
if ( p == NULL )
if ( p != NULL )
6. 有符号变量与无符号变量的值的转换
P9 -- P10 ! ! ! 待整理 int 与unsigned int 之间的转换
7. 数据交换 swap
引用传参
法1 使用异或运算完成交换( 推荐使用!!!)
void swap ( int & a, int & b)
{
a ^ = b;
b ^ = a;
a ^ = b;
}
法2 使用加减法运算完成交换( 有可能发生数据溢出)
void swap ( int & a, int & b)
{
a = a+ b;
b = a- b;
a = a- b;
}
8. C和C++有什么不同
最大的区别在于,它们用于解决问题的思想方法不同
1 、C是一个结构化语言,它的重点在于算法和数据结构
C程序的设计首要考虑的是如何通过一个过程,对输入进行处理,得到输出
2 、C++ 首先考虑的是如何构建一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或实现过程控制
C++ 相对于C有所加强,引入了 重载、内联函数、异常处理等
C++ 相对于C有所扩展,拓展了面向对象设计的内容,如类、继承、虚函数、模板、容器
C++ 中不仅需要考虑数据封装,还需要考虑对象粒度的选择、对象接口的设计和继承、组合与继承的使用等问题
10. 标准头文件的结构
#ifndef __XXX_H__
#define __XXX_H__
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
11. #include < >和#include " "有什么区别
< > 表名这个文件是标准头文件
" " 表名这个文件是用户提供的头文件,查找该文件时将从当前文件目录( 或文件名指定的其他目录) 中寻找文件,然后在标准位置寻找文件
12. atexit()函数 注册程序正常终止时要被调用的函数
可以用atexit ( ) 函数来注册程序正常终止时要被调用的函数
atexit ( ) 函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数
atexit ( ) 函数原型为:int atexit ( void ( * ) ( void ) )
并且在main ( ) 函数结束时调用,调用这些函数的顺序与注册它们的顺序相反;最先注册的最后调用,最后注册的最先调用
参数压栈造成的,参数由于压栈顺序而后入先出