-
保证对象只初始化一次的方法 - [About C++]
2010-06-04
class A
{
protect:
A(){}public:
public A* Get_A
{
static A* aa=null
if(aa==null) aa=new A();
return aa;
}
} -
不应该让函数返回一个指向局部变量的指针 - [About C++]
2010-04-12
任何一个函数都不应该把自己的局部变量的指针作为它的返回值。如果想让一个函数不留任何隐患地返回一个指针,只能通过动态分配内存方法。比如下面函数错误:
char *get_name(){
char name[100];
return name;
}return语句后数组将不存在,name所指的地址将可能被用作其他用途,但name所指的地址依然合法。
-
判断阶乘是否超出范围 - [About Algorithm]
2010-04-12
#include <iostream>
#include <climits>bool inRange(int num)
{
unsigned long max=ULONG_MAX;
for(int i=num;i>=1;i--){
max/=i;
}
if(max<1){
return false;
}
else{
return true;
}
}说明:以整数4的阶乘为例:1*2*3*4=24。假设在这台计算机上无符号长整数的最大可取值为20。如果计算20/4/3/2/1,最终结果为0.833。如果无符号长整数的最大可取值为30,30/4/3/2/1=1.25。这意味着最大可取值连续除以某个阶乘里的整数的最终结果小于1,说明这个阶乘不能准确地计算出来(结果超出最大值)。如果连除结果大于1,说明阶乘还在范围之内。
共1页 1







