| 是指位运算“或”,比如说 1|0 当然是等于1,而0|0 等于0(具体可见真值表)。
a|=b;是指先将a与b进行或运算,再将结果赋给a,比如说a=0,b=1,a|b的结果就是1,将其赋给a,则经过这条语句后a的值为1.
||是逻辑运算“或”,这个或跟高中学的“或”意思就基本一样了。而所有?=(?代表一种运算)运算符,都是指先将等号两边的变量(等号右边可能是常量)进行?运算,再将结果赋给a。
->是成员选择符,下面是我帮你找的一点解释:
成员选择符“.”与“->”的区别主要是操作符前面变量的类型。如果变量是指针型,则操作符为“->”,如果是非指针变量应该使用“.”。
比如说一个类Time,我们分别定义一个此类的指针和对象。
Time *ptime=new Time;
Time time;
如果我们想访问这个类中的一个成员变量m_Hour(假设其为公共的),则两个不同类型的访问为:
ptime->m_Hour;
time.m_Hour;
当然,我们也可以用下面这种方式进行访问:
(*ptime).m_Hour;
希望通过这个例子,你能区分这两种操作符的区别。
说到这里,可能你觉得|,||很难区分,其实不然,看下面这个例子:
当01 | 10 后的结果为11(注意这里是二进制,或运算之类的运算都是对二进制的操作),而 01 || 10 后的结果是1,由于两个数都非零,所以结果当然为“真”。“真”可以用一个非零的数来表示。
LS别以为op=都相当于 = a op b,有些组合可是非法的。
|是按位或,或的含义看离散数学。
|=是异或赋值,即a |= b; 相当于 a = a|b;
||,是逻辑或
||=,非法的一个操作符。
->,举个例子容易说明,a->b相当于(*a).b。->只是后者的等价形式。
|是位或
|=是取位或后赋值,就好比+=一样
||=是取逻辑或后赋值
跟+=,-=,*=等一样,举一反三就行了。
->是结构指针或类指针访问成员变量。
如struct aa{ int b;};
struct aa *a;
则有写法:a->b 表示a里的b的值
上面三个C++里边都没有,也不能重载。
下面这个是指针访问。
假如p是指向a的一个指针。那么:
*p的作用和p->一个意思。
这些一般在嵌入式编程中用的多点