C++编程中的或||、与&&、非!逻辑运算符基本用法整理

逻辑或运算符:||
 
语法

logical-or-expression
||
 logical-and-expression

备注
如果任一操作数或两个操作数为 true,则逻辑“或”运算符 (||) 返回布尔值 true;否则返回 false。操作数在计算之前隐式转换为类型 bool,结果的类型为 bool。逻辑“或”具有从左向右的关联性。
逻辑“或”运算符的操作数不需要是同一类型,但是它们必须是整型或指针类型。操作数通常为关系或相等表达式。
第一个操作数将完全计算,并且在继续计算逻辑“或”表达式之前将完成所有副作用。
仅当第一个操作数的计算结果为 false (0) 时计算第二个操作数。在逻辑“或”表达式为 true 时,这将消除对第二个操作数的不必要的计算。

代码如下:

printf( "%d" , (x == w || x == y || x == z) );

在上面的示例中,如果 x 与 w、y 或 z 相等,则 printf 函数的第二个参数的计算结果将为 true,并打印值 1。否则,它的计算结果将为 false,并打印值 0。只要其中一个条件的计算结果为 true,计算便会停止。
|| 的运算符关键字
or 运算符是 || 的等效文本。在您的程序中有两种访问 or 运算符的方法:包括头文件 iso646.h 或使用 /Za(禁用语言扩展)编译器选项进行编译。

// expre_Logical_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate logical OR
#include <iostream>
using namespace std;
int main() {
  int a = 5, b = 10, c = 15;
  cout << boolalpha
     << "The true expression "
     << "a < b || b > c yields "
     << (a < b || b > c) << endl
     << "The false expression "
     << "a > b || b > c yields "
     << (a > b || b > c) << endl;
}

逻辑与运算符:&& 
语法

expression
&&
 expression

备注
如果操作数为 true,则逻辑“与”运算符 (&&) 返回布尔值 true,否则返回 false。操作数在计算之前隐式转换为类型 bool,结果的类型为 bool。逻辑“与”具有从左到右的关联性。
逻辑“与”运算符的操作数不需要具有相同的类型,但它们必须是整数或指针类型。操作数通常为关系或相等表达式。
第一个操作数将完全计算,在继续对逻辑“与”表达式进行计算前将完成所有副作用。
如果第一个操作数的计算结果为 true(非零),则计算第二个操作数。当逻辑“与”表达式为 false 时,这种计算方式可消除不必要的对第二个操作数的计算。可以使用此短路计算防止 null 指针取消引用,如以下示例所示:

char *pch = 0;
...
(pch) && (*pch = 'a');

如果 pch 为 null (0),则从不计算表达式的右侧。因此,无法通过 null 指针进行赋值。
&& 的运算符关键字
and 运算符是 && 的文本等效项。您的程序中有两种访问 and 运算符的方法:包含标头文件 iso646.h,或使用 /Za(禁用语言扩展)编译器选项进行编译。

// expre_Logical_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#include <iostream>

using namespace std;

int main() {
 int a = 5, b = 10, c = 15;
 cout << boolalpha
   << "The true expression "
   << "a < b && b < c yields "
   << (a < b && b < c) << endl
   << "The false expression "
   << "a > b && b < c yields "
   << (a > b && b < c) << endl;
}

逻辑非运算符:!
 
语法

代码如下:

! cast-expression

备注
逻辑求反运算符 (!) 反转其操作数的含义。操作数必须是算法或指针类型(或计算结果为算法或指针类型的表达式)。操作数将隐式转换为类型 bool。如果已转换的操作数是 false,则结果是 true;如果已转换的操作数是 true,则结果是 false。结果为 bool 类型。
对于表达式 e,一元运算符表达式 !e 与该表达式 (e == 0) 等效,涉及重载运算符的情况除外。
! 的运算符关键字
not 运算符是与 ! 等效文本。在您的程序中,可通过两种方法访问 not 运算符:包含头文件 iso646.h,或使用 /Za(禁用语言扩展)编译器选项进行编译。

// expre_Logical_NOT_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main() {
 int i = 0;
 if (!i)
  cout << "i is zero" << endl;
}
(0)

相关推荐

  • C++中的按位与&、按位与或|、按位异或^运算符详解

    按位与运算符:& 语法 expression & expression 备注 表达式可以是其他"与"表达式,或(遵循下面所述的类型限制)相等表达式.关系表达式.加法表达式.乘法表达式.指向成员的指针表达式.强制转换表达式.一元表达式.后缀表达式或主表达式. 按位"与"运算符 (&) 会将第一操作数的每一位与第二操作数的相应位进行比较.如果两个位均为 1,则对应的结果位将设置为 1.否则,将对应的结果位设置为 0. 按位"与"

  • c++作用域运算符用法(全局变量和局部变量)

    通常情况下,如果有两个同名变量,一个是全局变量,另一个是局部变量,那么局部变量在其作用域内具有较高的优先权,它将屏蔽全局变量. 作用域运算符 复制代码 代码如下: #include<iostream>using namespace std;int num=10;int main(){   int num;    num=25;    cout<<"num is "<<num<<endl;    return 0;} 程序的输出结果是num

  • C++运算符重载 成员函数与友元函数详解

    复制代码 代码如下: #include<iostream>using namespace std;class A{    int x,y;    public:    A(int xx,int yy):x(xx),y(yy){}    A(){x=0;y=0;}    A operator+(const A&b) //不加const限定,也可以    { return A(x+b.x,y+b.y); }    A operator-()    { return A(-x,-y); } 

  • C++中的异或运算符^的使用方法

    C++中^运算表示的是二进制的异或运算2^4=6010^100=110 使用该运算可以实现无中间变量两数字的兑换 下面的例子实现a和b的置换 a=2: b=4: a=a^b; b=a^b; a=a^b; 异或^是一个非常重要的运算符,大量问题可以利用异或的特点找到解决方案,尤其是在各大公司的面试题中.异或绝对是一个关键的运算符.

  • C++中求余运算符(%)示例详解

    介绍: %是求余运算符,也叫模除运算符,用于求余数. %要求两个操作数均为整数(或可以隐式转换成整数的类型). 标准规定: 如果%左边的操作数为负数时,则模除的结果为负数或者0, 如果%左边的操作数为正数时,则模除的结构为正数或者0. 示例代码: #include<iostream> using namespace std; int main(){ char c = 253; int i =5 ; cout<<c%2<<endl; cout<<i%c<

  • C++运算符重载的方法详细解析

    运算符重载实质上是函数的重载 重载运算符的函数一般格式如下: 函数类型    operator  运算符名称    (形参表列) {对运算符的重载处理} 例如,想将"+"用于Complex(复数)的加法运算,函数的原型可以是这样的: 复制代码 代码如下: Complex operator + (Complex & c1,Complex &c2); 其中,operator是关键字,时候专门用于定义重载运算符的函数的,运算符名称就是C++提供给用户的预定运算符. 注意:函数

  • C++重载运算符的规则详解

    (1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载.例如,有人觉得BASIC中用"* *"作为幂运算符很方便,也想在C++中将"* *"定义为幂运算符,用"3* *5"表示35,这是不行的. (2)C++允许重载的运算符C++中绝大部分运算符都是可以被重载的. 不能重载的运算符只有5个: .             (成员访问运算符) .*            (成员指针访问运算符) ::             (域运

  • 解析C++中不能重载为友元函数的四个运算符

    C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符"="的重载C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数.不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符"="是基于对象操作的.那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目

  • C++按位异或运算符的使用介绍

    参与运算的两个值,如果两个相应位相同,则结果为0,否则为1.即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例如:10100001^00010001=10110000 0^0=0,0^1=1 0异或任何数=任何数 1^0=1,1^1=0 1异或任何数-任何数取反 任何数异或自己=把自己置0 (1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算. 10100001^00000110=10100111 //1010

  • C++中不能被重载的运算符介绍

    C/C++ 里大多数运算符都可以在 C++ 中被重载.C 的运算符中只有 . 和 ?:(以及 sizeof,技术上可以看作一个运算符)不可以被重载.C++ 增加了一些自己的运算符,除了 :: 和 .* 外,大多数都可以被重载.

随机推荐