灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2546回复:0

[C++技术]再学C++ Primer(5)-表达式

楼主#
更多 发布于:2012-09-06 11:33


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

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

关系操作符具有左结合性,如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)用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型。

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

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


喜欢0 评分0
游客

返回顶部