零散总结

#definetypedef的用法与区别

#define MAX 100 //#define在预编译时进行简单替换,不做正确性检查

typedef string STRING; //typedef在编译时处理


%m.nf和%m.nd

对于小数%m.nd的意思,m表示输出项占的位数,n表示精度(即小数点后保留几位)。如用%4.1f格式输出1.1234,结果为“ 1.1”。

对于整数%m.nd的意思,m表示输出项占的位数,如果输出位数小于n,则前面补0直到n位数据,如果大于n则左补空格。例如用%4.2格式输出1,结果为“  01”。


basic_string&replace( size_type index, size_type num, const char *str );
C++手册中描述为“用str中的num个字符(从index开始)替换 本字符串中的字符 ”是错误的,正确的应该为“ 用str中的字符替换本字符串中的(从index开始)num个字符 ”。

数据类型自动转换导致死循环

int f(int index, DATATYPE data[])
{
       int total = 0;
       for (unsigned i = 0; i < index; i++)
              total += data[i].val;
       return total
}

这里的index可通过界面配置,若配置了-1i < index,做比较运算时会将int转换成unsigned-1的编码是FFFFFF(补码表示),转化为无符号的值是unsigned的最大值,这个循环会一直运行,直到访问到非法的内存。在ifforwhile的判断条件中,不要使用符号不一致的比较,否则很容易因自动类型转换导致不可预期的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值