面试各种小坑肯(持续更新)

各种小坑

1.小数的equal

计算机表示小数的时候,包括float和double型,都有误差。所以不能使用==来判断他们是否相等。只能判断他们是否在一个很小的误差之中,例如误差在正负0.00000001中就默认为相等。

2.位移运算符

a>>1
表示将a的二进制数向右移动一位,现实意义为除以2.而且位运算等运算速度远比除运算要快的多。
eg:2>>1 = 1 ( 10右移一位为 1)

3.动态开辟数组

在数组大小不确定时,经常使用动态开辟方式。例如开辟一个int的动态数组。

int *p = new int[n];

同时注意的点是,动态开辟后需要delete数组。

delete[] p;

而在问题中,有很多时候需要开辟一个二维数组。而二维数组则不能直接写成下面这样:

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;

 

4.鲁棒性

鲁棒性即为健壮性,指程序能够判断输入是否合乎规范要求,并对不合理输入给予合理的处理。
注视代码的鲁棒的性,需要在代码函数的入口处添加验证传入参数的合理性。





转载于:https://www.cnblogs.com/Mask-D/p/10471376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值