c语言中的|| 什么意思

如题所述

这个是“或”的意思,还有一个功能类似的符号“|”,其区别如下:
1.if(a==1|b==2)程序执行时,即使a==1为真,即括号内的命题为真,也仍然会检测b==2的真假;
2.if(a==1||b==2)程序执行时,如果a==1为真,即括号内的命题为真,则不会检测b==2的真假。
根据这个区别,一般而言,使用“||”效率更高。不过也有特殊情况,如:
if(a==1||fopen("test.txt","w+"))如果a==1为真,即括号内的命题为真,则不会检测第二个条件是否为真,因而不会执行fopen("test.txt","w+")。如果你本来打算要执行这个语句的话,要不把“||”改为“|”,要不就将整个语句这样写:
FILE *f=fopen("test.txt","w+");
if(a==1||*f)
……

另外,“|”不仅可以表示逻辑或,还是位移运算的符号。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-16
C语言运算符分类
  1级(左结合)   () 圆括号;[]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。   2级(右结合)   !逻辑非运算符;~按位取反运算符;++前缀增量运算符;--前缀减量运算符;+正号运算符;-负号运算符;(类型)类型转换运算符;*指针运算符;&地址运算符;sizeof长度运算符。   3级(左结合)   *乘法运算符;/除法运算符;%取余运算符。   4级(左结合)   +加法运算符;-减法运算符。      5级(左结合)   <<左移运算符;>>右移运算符。   6级(左结合)   <、<=、>、>=关系运算符。   7级(左结合)   ==等于运算符;!=不等于运算符。   8级(左结合)   &按位与运算符。   9级(左结合)   ^按位异或运算符。   10级(左结合)   |按位或运算符。   11级(左结合)   &&逻辑与运算符。   12级(左结合)   ||逻辑或运算符。   13级(右结合)   ? :条件运算符。   14级(右结合)   =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。   15级(左结合)   ,逗号运算符。

你说的是逻辑或,即两个数只要有一个或两个都为为真结果返回为真,两个同时为假,返回值为假。这些帮你参考
第2个回答  2011-06-16
这是位运算符中的右移运算符:
a>>4表示将a的个二进制位右移4位,移到右端的低位被舍弃,对无符号数,高位补0
例如:a=017时:
a的值用二进制形式表示为:00001111,
a>>4为:00000000|1111
右移一位相当于除以2,右移n位,就相当于除以2^n。
第3个回答  2011-06-16
|| 是或运算,例如 :
bool a = 1 || 0; 则a为true。
也就是说多项中有一项为真,就为真
第4个回答  2011-06-16
逻辑或。 该运算符两边的操作数中有一个为真或两个都为真时,结果返回为真;两个都为假时,结果返回为假。
相似回答