当前位置:编程学习 > C/C++ >>

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

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


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


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


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


bitset的用法:
 作用:方便地管理一系列的bit位而不用程序员自己来写代码。
初始化方法:
bitset<N>varm (M)
其中varm为变量名。
N表示该类型在内存中占的位数,是二进制。
M表示变量varm的初始值www.zzzyk.com
实例:
#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)用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型。


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


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

摘自  左脑设计,右脑编程 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,