计算机表示小数的时候,包括float和double型,都有偏差。因此不能使用==来判断他们是否相等。只能判断他们是否在一个很小的偏差之中,例如偏差在正负0.00000001中就默认为相等。数组
a>>1
表示将a的二进制数向右移动一位,现实意义为除以2.并且位运算等运算速度远比除运算要快的多。
eg:2>>1 = 1 ( 10右移一位为 1)函数
在数组大小不肯定时,常用动态开辟方式。例如开辟一个int的动态数组。spa
int *p = new int[n];
同时注意的点是,动态开辟后须要delete数组。code
delete[] p;
而在问题中,有不少时候须要开辟一个二维数组。而二维数组则不能直接写成下面这样:blog
int size=50,Column=50; int (*p)[Column]=new int [size][Column]
这种写法是错误的。编译器不会经过,能够看出这种动态开辟本质上只有对一维数组是真正动态开辟的。
动态开辟二维数组以下:资源
//动态开辟空间 int **p = new int*[m]; //开辟行 for(int i = 0; i < m; i++) p[i] = new int[n]; //开辟列 //释放开辟的资源 for(i = 0; i < m; i++) delete[] p[i]; delete[] p;
鲁棒性即为健壮性,指程序可以判断输入是否合乎规范要求,并对不合理输入给予合理的处理。
注视代码的鲁棒的性,须要在代码函数的入口处添加验证传入参数的合理性。编译器