Coding Aware
Coding前要考虑的几点:
- 输入参数的范围
- 返回值范围
- 溢出
数组
申请数组时,长度须是常量,如果要动态数组,使用malloc
int len = 10;
//int b[len] // fail
int a[100]; // ok
int *b = (int *) malloc(len * sizeof(int)); // dynamic array
比较浮点数是否相等
bool isEqual(double a, doube b){
return !(a>b || a<b);
}
-1/2商0余-1
- 微软实习笔试的时候,突然不知道-1/2等于多少了,居然想成商-1余1了,这。。。
- 好吧,余数可以为负
macro vs inline
- 在c中保护效率的方法是使用macro,使用macro可以避免函数的调用(压栈,保护等复杂操作),而是将函数直接展开
- C++中使用宏很难发现错误,且不能访问对象的私有成员等原因,建议使用inline函数,在得到宏的替换效能的同时,拥有函数的本身特性(类型、作用域等等)
- 所以,C++中对象成员函数都视为自动转为內联的(除只有声明的函数之外),如果想将一个全局函数定义为内联函数可用,inline关键字。
- 但是,在内联函数中如果有复杂操作将不被内联。如:循环和递归调用。
- 总结,将简单短小的函数定义为内联函数将会提高效率
- Java中没有inline关键字,但一个函数如果声明为final(private也有final的效果),则编译器会判断做不做內联优化