一、浮点类型不能直接进行位操作
例如,对double类型不允许进行移位操作,位运算。
double d=3.2;
d = d << 2 ;//非法表达式
d = d & 3;//非法表达式
d = d && 3;//合法,这里是逻辑运算
如果想实现对浮点类型位运算,需要强制解释为无符号整型数才行。
double j =3.14;
int *k = reinterpret_cast<int*>(&j);//强制转换为int类型
*k <<= 2;
cout<<k<<endl;
二、运算式作为判断条件
当运算式作为判断条件时,会将最左值作为判断条件。比如下面会将运算式的最左边的变量的结果作为判断条件。
#include<iostream>
using namespace std;
int main(){
int i=0;
int j=0;
if(i=j=0) cout<<"T1"<<endl;
if(i=j=1) cout<<"T2"<<endl;
if(i-=1) cout<<"T3"<<endl;
}
输出为T2;