C++运算符

  1. 算术运算符
  2. 关系运算符
  3. 位运算符
  4. 逻辑运算符
  5. 赋值运算符
  6. 其他运算符
  7. 运算符优先级


1. 算术运算符

算术运算符,就是,加、减、乘、除、取模(取余)、自增、自减;

int a =1;
int b = ++a; // 该表达式的值为2, 变量a的值也变为2

int a = 1;
int c = a++; // 该表达式的值为1,变量a的值变为2

// ---------------------------------------------------------

int a = 2;
int b = --a; // 该表达式的值为1,变量a的值变为1

int a = 2;
int c = a--; // 该表达式的值为2,变量a的值变为1


2. 关系运算符

关系运算符,就是,比较运算符左右两个操作数的大小关系的运算符!关系运算表达式的值是一个bool值!



3. 位运算符

位运算符,是指,对操作数的二进制的形式,进行相关操作!

左移运算,相当于,进行,乘以2的n次方的操作( n为右操作数 );

右移运算,相当于,进行,除以2的n次方的操作( n为右操作数 );



4. 逻辑运算符

逻辑运算符的操作数,要么值为真,要么值为假!逻辑运算操作包括与、或、非

4.1 逻辑运算符的操作数,要么为真,要么为假;在C++中,什么是假?

在 C++ 中,逻辑运算符的操作数可以是任何类型,但在进行逻辑运算时,它们会被转换为布尔值(true 或 false)。

以下是一些关于什么被视为“假”的详细说明:

(1)布尔类型

false:布尔类型的值false,本身就是假!

(2)整数类型

0:在C++中,整数值0,被视为假;

非零值:任何非零整数( 如1、-1、42等 ),都被视为真!

(3)指针类型

nullptr:空指针nullptr,被视为假;

非空指针:任何指向有效对象的指针,都被视为真!

(4)自定义数据类型

重载operator bool:如果自定义的数据类型重载了 operator bool,则根据重载的结果来判断真假。

其他情况:如果自定义的数据类型没有重载 operator bool,编译器会将实例对象转换为布尔值,通常会根据对象的内部状态来决定真假。

#include <iostream>


class MyClass {
public:
    MyClass(bool value) : value(value) {}
    operator bool() const { return value; } // 重载,可转换为布尔值的,操作符 ---> operator bool()

private:
    bool value;
};



int main() {
    // 布尔类型
    bool b = false; // 假
    std::cout << std::boolalpha << b << std::endl; // 输出: false


    // 整数类型
    int zero = 0; // 假
    int nonZero = 42; // 真
    std::cout << std::boolalpha << (zero != 0) << std::endl; // 输出: false
    std::cout << std::boolalpha << (nonZero != 0) << std::endl; // 输出: true


    // 指针类型
    int* ptr1 = nullptr; // 假
    int x = 10;
    int* ptr2 = &x; // 真
    std::cout << std::boolalpha << (ptr1 != nullptr) << std::endl; // 输出: false
    std::cout << std::boolalpha << (ptr2 != nullptr) << std::endl; // 输出: true


    // 自定义类型
    MyClass objFalse(false);
    MyClass objTrue(true);
    std::cout << std::boolalpha << (objFalse) << std::endl; // 输出: false
    std::cout << std::boolalpha << (objTrue) << std::endl; // 输出: true

    return 0;
}

总结:

在 C++ 中,以下值被视为假:

  • 布尔值 false
  • 整数值 0
  • 空指针 nullptr
  • 自定义的数据类型,根据其重载的 operator bool() 的返回值

其他所有值(非零整数、非空指针、布尔值 true 等)都被视为真

理解这些规则,有助于在逻辑运算中,正确使用条件表达式。



5. 赋值运算符



6. 其他运算符



7. 运算符的优先级

可以将运算符的优先级,粗略地记为:

(1)作用域运算符

(2)括号;

(3)其他一元运算符( 包括,非运算! );

(4)算数运算符;

(5)移位运算符;

(6)关系运算符;

(7)位运算符;

(8)逻辑运算符;

(9)三元条件运算符;

(10)赋值运算符;

(11)抛出异常运算符;

(12)逗号运算符;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值