C++入门——60s从0到1
运算符
运算符是编程语言中用于处理数据的基本操作。C++是一种强大的编程语言,支持多种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。
算术运算符
算术运算符用于执行基本的数学运算,例如加、减、乘、除和求余等。以下是C++中的算术运算符:
+ 加法
- 减法
* 乘法
/ 除法
% 求余
以下是一个示例程序,演示如何使用算术运算符:
#include <iostream> using namespace std; int main() { int a = 10; int b = 5; int c = a + b; // 使用加法运算符计算a+b的值,并将结果赋值给变量c cout << "a + b = " << c << endl; // 输出结果 return 0; }
在此示例中,将整型变量a定义为10,将整型变量b定义为5。然后使用加法运算符计算a+b的值,并将结果赋值给整型变量c。最后输出结果。
关系运算符
关系运算符用于比较两个值之间的关系,例如比较两个数的大小、比较两个字符串是否相等等。以下是C++中的关系运算符:
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
以下是一个示例程序,演示如何使用关系运算符:
#include <iostream> using namespace std; int main() { int a = 10; int b = 5; if (a > b) { // 使用大于运算符比较a和b的大小关系 cout << "a is greater than b" << endl; // 如果a大于b,输出结果 } else { cout << "a is less than or equal to b" << endl; // 如果a小于或等于b,输出结果 } return 0; }
在此示例中,将整型变量a定义为10,将整型变量b定义为5。然后使用大于运算符比较a和b的大小关系,并根据比较结果输出相应的结果。如果a大于b,则输出"a is greater than b",否则输出"a is less than or equal to b"。
逻辑运算符
逻辑运算符用于组合布尔表达式,例如判断多个条件是否同时成立或某个条件是否不成立等。以下是C++中的逻辑运算符:
&& 逻辑与(and)
|| 逻辑或(or)
! 逻辑非(not)
以下是一个示例程序,演示如何使用逻辑运算符:
#include <iostream> using namespace std; int main() { bool a = true; bool b = false; bool c = (a && !b) || (!a && b); // 使用逻辑与和逻辑非运算符组合布尔表达式 if (c) { // 如果布尔表达式的值为true,输出结果 cout << "The expression is true" << endl; // 输出结果 } else { cout << "The expression is false" << endl; // 如果布尔表达式的值为false,输出结果 } return 0; }
在此示例中,将布尔类型的变量a定义为true,将布尔类型的变量b定义为false。然后使用逻辑与和逻辑非运算符组合布尔表达式(a && !b) || (!a && b),并根据布尔表达式的值输出相应的结果。如果布尔表达式的值为true,则输出"The expression is true",否则输出"The expression is false"。
自增自减运算符
自增(`++`)和自减(`--`)运算符用于将变量的值分别增加1或减少1。它们有两种形式:前置(例如 `++x` 或 `--x`)和后置(例如 `x++` 或 `x--`)。前置形式会先执行自增或自减操作,然后返回变量的新值;后置形式会先返回变量的原始值,然后执行自增或自减操作。
int x = 5; // 前置自增 ++x; // x 的值现在是 6 // 后置自增 x++; // x 的值仍然是 6 int y = 5; // 前置自减 --y; // y 的值现在是 4 // 后置自减 y--; // y 的值仍然是 4
强制转换运算符
强制转换(`static_cast`、`dynamic_cast`、`reinterpret_cast`、`const_cast`)运算符用于在C++中执行类型转换。这些转换允许程序员显式地将一种数据类型转换为另一种数据类型。
- `static_cast`:用于非多态类型之间的转换,如基本数据类型之间的转换、指针之间的转换等。
- `dynamic_cast`:用于多态类型之间的转换,特别是类层次结构中的安全向下转换。
- `reinterpret_cast`:用于执行低级别的、不安全的转换,如指针之间的任意转换。
- `const_cast`:用于修改类型的const或volatile属性。
例如
double d = 3.14;
int i = static_cast<int>(d); // 将 double 类型的 d 转换为 int 类型的 i
class Base {};
class Derived : public Base {};
Derived* d = new Derived();
Base* b = dynamic_cast<Base*>(d); // 将 Derived* 类型的 d 安全地转换为 Base* 类型的 b
int* int_ptr = nullptr;
void* void_ptr = reinterpret_cast<void*>(int_ptr); // 将 int* 转换为 void*
const int j = 10;
int* p = const_cast<int*>(&j); // 移除 const 属性,使得 p 可以修改 j 的值(尽管这样做是不安全的)
这些运算符在C++编程中非常常用,对于理解和控制程序的行为至关重要。在使用它们时,程序员需要确保转换是安全和有意义的,以避免出现未定义的行为或程序错误。