再学C++ Primer(5)-表达式
3051 点击·0 回帖
![]() | ![]() | |
![]() | 在求模或取余中如果有一个操作数是负数,这两种操作的结果取决于机器。 若仅靠左操作数的值无法确定该逻辑表达式的结果,才会求解其右操作数的值-短路求值。 关系操作符具有左结合性,如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)用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型。 算数转换:在执行算数操作之前,将操作符的操作数转换为同一类型,并使表达式也具有相同的类型。 强烈建议程序员避免使用强制类型转换。 | |
![]() | ![]() |