C++Builder的运算符详解

C++Builder的运算符详解

编码文章call10242025-03-14 15:02:5821A+A-



1. 算术运算符


- 加法运算符( + ):用于两个数相int num1 = 5;

int num2 = 3;

int sum = num1 + num2; // sum 的值为 8


- 减法运算符( - ):用于两个数相减。

int difference = num1 - num2; // difference 的值为 2


- 乘法运算符( * ):用于两个数相乘。

int product = num1 * num2; // product 的值为 15


- 除法运算符( / ):两个数相除,如果是整数相除,结果为整数部分。

int quotient = num1 / num2; // quotient 的值为 1

double result = static_cast(num1) / num2; // result 的值为 1.666667


- 取模运算符( % ):用于获取两个整数相除的余数。

int remainder = num1 % num2; // remainder 的值为 2


- 一元加运算符( + ):对操作数不产生实际影响,只是为了与一元减运算符对称。

int num = 5;

int result1 = +num; // result1 的值仍为 5


- 一元减运算符( - ):对操作数取负。

int num = 5;

int result2 = -num; // result2 的值为 -5


2. 赋值运算符


- 简单赋值( = ):将右边的值赋给左边的变量。

int a;

a = 10;


- 复合赋值运算符( += 、 -= 、 *= 、 /= 、 %= 等):先进行算术运算,再赋值。

int b = 5;

b += 3; // 相当于 b = b + 3,b 的值变为 8


- 位运算复合赋值( &= 、 |= 、 ^= 、 ~= 、 <<=>>= ):先进行位运算,再赋值。

int c = 5; // 5 的二进制为 00000101

c &= 3; // 3 的二进制为 00000011,c 变为 1(00000001)


3. 比较运算符


- 等于( == ):判断两个值是否相等,返回 bool 类型。

bool isEqual = (num1 == num2); // isEqual 的值为 false


- 不等于( != ):判断两个值是否不相等。

bool isNotEqual = (num1!= num2); // isNotEqual 的值为 true


- 大于( > ):判断左边的值是否大于右边的值。

bool isGreater = (num1 > num2); // isGreater 的值为 true


- 小于( < ):判断左边的值是否小于右边的值。

bool isLess = (num1 < num2); // isLess 的值为 false


- 大于等于( >= ):判断左边的值是否大于或等于右边的值。


bool isGreaterOrEqual = (num1 >= num2); // isGreaterOrEqual 的值为 true


- 小于等于( <= ):判断左边的值是否小于或等于右边的值。

bool isLessOrEqual = (num1 <= num2); // isLessOrEqual 的值为 false


4. 逻辑运算符


- 逻辑与( && ):两个条件都为 true 时,结果才为 true 。


bool condition1 = (num1 > 0);

bool condition2 = (num2 < 10);

bool resultAnd = condition1 && condition2; // resultAnd 的值为 true


- 逻辑或( || ):只要两个条件中有一个为 true ,结果就为 true 。

bool condition3 = (num1 < 0);

bool resultOr = condition3 || condition2; // resultOr 的值为 true


- 逻辑非( ! ):对条件取反。

bool resultNot =!condition1; // resultNot 的值为 false


5. 位运算符


- 按位与( & ):对两个数的二进制位进行与操作。

Int bitwiseAnd = num1 & num2; // 5 的二进制是 101,3 的二进制是 011,结果为 001,即 1


- 按位或( | ):对两个数的二进制位进行或操作。


int bitwiseOr = num1 | num2; // 结果为 111,即 7


- 按位异或( ^ ):对两个数的二进制位进行异或操作(相同为 0,不同为 1)。

int bitwiseXor = num1 ^ num2; // 结果为 110,即 6


- 按位取反( ~ ):对一个数的二进制位进行取反操作。


int bitwiseNot = ~num1; // 5 的二进制是 00000101,取反后为 11111010,在有符号整数中表示 -6


- 左移( << ):将一个数的二进制位向左移动指定的位数,右边补 0。


int leftShift = num1 << 1; // 5 左移 1 位,变为 1010,即 10


- 右移( >> ):将一个数的二进制位向右移动指定的位数,对于有符号整数,左边补符号位;对于无符号整数,左边补 0。


int rightShift = num1 >> 1; // 5 右移 1 位,变为 00000010,即 2


6. 自增自减运算符


- 前置自增( ++var ):先将变量的值加 1,然后使用新的值。

int c = 5;

int d = ++c; // c 变为 6,d 的值也为 6


- 后置自增( var++ ):先使用变量原来的值,然后将变量的值加 1。


int e = 5;

int f = e++; // f 的值为 5,e 变为 6


- 前置自减( --var ):先将变量的值减 1,然后使用新的值。

int g = 5;

int h = --g; // g 变为 4,h 的值也为 4


- 后置自减( var-- ):先使用变量原来的值,然后将变量的值减 1。


int i = 5;

int j = i--; // j 的值为 5,i 变为 4


7. 条件运算符( ? : )


- 是一个三元运算符,根据条件的真假返回不同的值。


int max = (num1 > num2)? num1 : num2; // max 的值为 5


8. 逗号运算符( , )


- 用于将多个表达式连接起来,从左到右依次计算每个表达式的值,并返回最后一个表达式的值。


int k = (1 + 2, 3 + 4); // k 的值为 7


9. 成员访问运算符( . 和 -> )


- . :用于访问结构体或类的成员变量和成员函数,当对象是结构体或类的实例时使用。


struct Point {

int x;

int y;

};

Point p = {10, 20};

int xValue = p.x;


- -> :当对象是指向结构体或类的指针时,使用 -> 来访问成员变量和成员函数。


Point* ptr = &p;

int yValue = ptr->y;


10. 指针运算符( * 和 & )


- * :指针解引用运算符,用于获取指针所指向变量的值。


int num3 = 10;

int* ptr1 = &num3;

int value = *ptr1; // value 的值为 10


- & :取地址运算符,用于获取变量的内存地址。


int* ptr2 = &num3; // ptr2存储 num3 的地址


11. sizeof 运算符


- 用于获取数据类型或变量所占用的字节数。


int sizeOfInt = sizeof(int); // 获取 int 类型占用的字节数

int num4 = 10;

int sizeOfVar = sizeof(num4); // 获取 num4 变量占用的字节数


12. 类型转换运算符


- static_cast :用于进行较为“安全”的类型转换,如基本数据类型之间的转换,以及指针类型的转换(前提是类型相关)。


double d = 3.14;

int i = static_cast(d); // i 的值为 3


- dynamic_cast :主要用于在继承体系中进行安全的向下转型(从基类指针或引用转换为派生类指针或引用),并且在运行时检查转换是否有效。仅适用于含有虚函数的类层次结构。


class Base { virtual void f() {} };

class Derived : public Base {};

Base* basePtr = new Derived();

Derived* derivedPtr = dynamic_cast(basePtr);

if (derivedPtr) {

// 转换成功

}


- const_cast :用于去除或添加指针或引用的 const 或 volatile 属性。

const int num5 = 10;

int* ptr3 = const_cast(&num5);

// 注意:通过 ptr3 修改 num5 是未定义行为,但这里展示 const_cast 的用法


- reinterpret_cast :用于进行危险的、底层的类型转换,如将指针转换为整数类型或不同类型指针之间的转换,这种转换不进行任何类型检查。


int num6 = 10;

int* ptr4 = &num6;

char* charPtr = reinterpret_cast(ptr4);


13. 函数调用运算符( () )


- 用于调用函数,并在括号内传递参数。


int add(int a, int b) {

return a + b;

}

int result3 = add(3, 5); // result3 的值为 8


14. 下标运算符( [] )


- 用于访问数组元素或具有类似数组访问语义的对象(如 std::vector )。


int arr[5] = {1, 2, 3, 4, 5};

int element = arr[2]; // element 的值为 3


15. new 和 delete 运算符


- new :用于在堆上分配内存,并返回指向分配内存起始地址的指针。


int* dynamicInt = new int;

*dynamicInt = 10;


- delete :用于释放由 new 分配的内存。


delete dynamicInt;


对于数组,使用 new[] 和 delete[] 。


int* dynamicArray = new int[5];

delete[] dynamicArray;


16. 作用域解析运算符( :: )


- 用于访问全局变量(当局部变量与全局变量同名时),或访问类的静态成员。


int globalVar = 10;

void func() {

int globalVar = 20;

int globalValue = ::globalVar; // 获取全局的 globalVar

}

class MyClass {

public:

static int staticVar;

};

int MyClass::staticVar = 5;


希望以上能对你有所帮助,大家一起进步![烟花][烟花][烟花]

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4