再学C++ Primer(5)-表达式

在求模或取余中如果有一个操作数是负数,这两种操作的结果取决于机器。


若仅靠左操作数的值无法确定该逻辑表达式的结果,才会求解其右操作数的值-短路求值。


关系操作符具有左结合性,如if(i<j<k),即将k与整数1或0做比较。


移位操作的右操作数不可以是负数,而且必须是严格小于左操作数位数的值。


bitset的用法:
 作用:方便地管理一系列的bit位而不用程序员自己来写代码。
初始化方法:
bitset<N>varm (M)
其中varm为变量名。
N表示该类型在内存中占的位数,是二进制。
M表示变量varm的初始值
实例:
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
    bitset<3> bs(7);
cout<<"bs[0] is "<<bs[0]<<endl;
    cout<<"bs[1] is "<<bs[1]<<endl;
    cout<<"bs[2] is "<<bs[2]<<endl;
    return 0;
}
 说明:声明一个3位bitset型变量,初始化为7,二进制码为111,输出为1 1 1.
好处:更直接更易阅读和书写,正确使用的可能性更高,适合低级直接位操作。


条件操作符优先级相当低,使用时应当注意使用圆括号。


删除指针后,改指针变成悬垂指针,往往导致错误,应立即将指针置为0,这样就非常清楚地表明指针不再指向任何对象。


内存泄漏的一个原因:删除指向动态分配内存的指针失败,因为无法将该块内存返回给自由存储区。


const动态对象也可以使用delete来删除。


发生隐式类型转换的情况(可能会发生精度损失)
1)在混合类型的表达式中,其操作数被转换成相同的类型;
2)用作条件的表达式被转换为bool类型;
3)用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型。


算数转换:在执行算数操作之前,将操作符的操作数转换为同一类型,并使表达式也具有相同的类型。


强烈建议程序员避免使用强制类型转换。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值