C++入门基础:C++中的常用操作符练习

开头介绍下C++语言先,C++是一种广泛使用的计算机程序设计语言,起源于20世纪80年代,由比雅尼·斯特劳斯特鲁普在贝尔实验室开发。它是C语言的扩展,增加了面向对象编程的特性。C++的应用场景广泛,包括系统软件、游戏开发、嵌入式系统、高性能计算、网络编程和图形界面应用程序等。其语言特点主要体现在高效性、可移植性、面向对象编程、模板编程以及丰富的标准库,与C语言相比,C++继承了C语言的优点并进行了扩充和完善,C++属于C语言的超集,加入了更多的编程范式和表达能力,但两者也存在一定的差异。

Hello World

这里先上一个最基础的编译和运行案例,在终端输出"Hello World",具体代码如下:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
    1. 导入标准输入输出流库#include <iostream>
      这一行是预处理指令,告诉编译器导入包含标准输入输出流库(iostream)。这个库可以使用输入输出功能,打印文本到屏幕。
    1. 定义主函数int main()
      这是主函数的开始,C++程序从这里开始执行。int 表示这个函数返回一个整数值,这是与操作系统的约定。在{}大括号内是主函数的体,也就是程序执行的所有指令的地方。
    1. 输出"Hello World"std::cout << "Hello, World!" << std::endl;
      std::cout 是C++中用于输出的对象。std 是标准库的命名空间,cout 代表控制台输出。
      << 是插入操作符,用于将右侧的内容发送到左侧指定的流中。
      std::endl 是一个特殊的标记,表示新行的开始,并且会刷新输出缓冲区,确保立即显示输出。
    1. 结束主函数return 0;
      return 语句用于结束函数的执行,并将控制权返回给调用函数。在main函数中,返回值通常提供给操作系统用于指示程序的退出状态。0 表示成功。
运行程序

编译C++文件与编译C语言文件在使用的编译器上有所不同。C语言通常使用的是gcc编译器,而C++则使用的是g++编译器。尽管两者在编译器上有所区别,但编译的大致操作流程是相近的。

要编译一个C++文件,比如名为hello.cpp的文件,可以使用以下命令:

g++ hello.cpp -o hello

这条命令会调用g++编译器来编译hello.cpp文件,并将编译后生成的可执行文件命名为hello。其中,-o选项用于指定输出文件的名称。

编译完成后,可以使用以下命令来运行这个程序:

./hello

这条命令会在当前目录下执行名为hello的可执行文件。如果代码编写正确正常,即可在终端看到程序输出的结果。

常用操作符表格

先附上常用操作符表格,方便以后使用查找:

类别操作符描述使用实例
算术操作符+加法int a = 5, b = 2; int result = a + b;
算术操作符-减法int a = 5, b = 2; int result = a - b;
算术操作符*乘法int a = 5, b = 2; int result = a * b;
算术操作符/除法int a = 5, b = 2; int result = a / b;
算术操作符%取模(求余数)int a = 5, b = 2; int result = a % b;
算术操作符++自增int a = 5; a++;
算术操作符--自减int a = 5; a--;
比较操作符==等于int a = 5, b = 2; bool result = a == b;
比较操作符!=不等于int a = 5, b = 2; bool result = a != b;
比较操作符>大于int a = 5, b = 2; bool result = a > b;
比较操作符<小于int a = 5, b = 2; bool result = a < b;
比较操作符>=大于或等于int a = 5, b = 2; bool result = a >= b;
比较操作符<=小于或等于int a = 5, b = 2; bool result = a <= b;
逻辑操作符!逻辑非bool a = true; bool result = !a;
逻辑操作符&&逻辑与bool a = true, b = false; bool result = a && b;
逻辑操作符||逻辑或bool a = true, b = false; bool result = a || b;
位操作符&按位与int a = 5, b = 3; int result = a & b;
位操作符|按位或int a = 5, b = 3; int result = a | b;
位操作符^按位异或int a = 5, b = 3; int result = a ^ b;
位操作符~按位取反int a = 5; int result = ~a;
位操作符<<左移int a = 5; int result = a << 1;
位操作符>>右移int a = 5; int result = a >> 1;
赋值操作符=赋值int a; a = 5;
赋值操作符+=加等于int a = 5; a += 2;
赋值操作符-=减等于int a = 5; a -= 2;
赋值操作符*=乘等于int a = 5; a *= 2;
赋值操作符/=除等于int a = 5; a /= 2;
赋值操作符%=模等于int a = 5; a %= 2;
赋值操作符<<=左移等于int a = 5; a <<= 1;
赋值操作符>>=右移等于int a = 5; a >>= 1;
赋值操作符&=按位与等于int a = 5; a &= 3;
赋值操作符^=按位异或等于int a = 5; a ^= 3;
赋值操作符|=按位或等于int a = 5; a |= 3;
条件操作符? :条件表达式int a = 5, b = 2; int result = a > b ? a : b;
类型操作符sizeof返回变量或类型所占的字节数int a; size_t size = sizeof(a);
类型操作符typeid返回一个表达式的类型信息int a; const std::type_info& typeInfo = typeid(a);
类型操作符const_castdynamic_castreinterpret_caststatic_castC++的类型转换操作符double d = 3.14; int i = static_cast<int>(d);
其他操作符&取地址操作符int a = 5; int* ptr = &a;
其他操作符*解引用操作符int a = 5; int* ptr = &a; int value = *ptr;
其他操作符.成员访问操作符struct S { int x; }; S s; int value = s.x;
其他操作符->指针成员访问操作符struct S { int x; }; S* s = new S; int value = s->x;
其他操作符[]下标操作符int arr[5]; int value = arr[2];
其他操作符()函数调用操作符void func() { } func();
其他操作符,逗号操作符int a = 1, b = 2;
其他操作符newdelete动态内存分配和释放int* ptr = new int; *ptr = 5; delete ptr;

常用操作符使用示例

赋值操作符

对变量进行赋值

// assignment_operators.cpp
#include <iostream>  
#include <bitset>  
using namespace std;  
  
int main() {  
    int a = 5;  
    int b = 10;  
  
    // 赋值  
    a = b;  
    cout << "a = b; a = " << a << endl;  
    // 加等于  
    a += 3;  
    cout << "a += 3; a = " << a << endl;  
    // 减等于  
    a -= 2;  
    cout << "a -= 2; a = " << a << endl;  
    // 乘等于  
    a *= 2;  
    cout << "a *= 2; a = " << a << endl;  
    // 除等于  
    a /= 5;  
    cout << "a /= 5; a = " << a << endl;  
    // 模等于  
    a %= 3;  
    cout << "a %= 3; a = " << a << endl;  
    // 重新设置下a和b的值  
    a = 5; // 101  
    b = 3; // 0011  
    // 左移等于  
    a <<= 1;  
    cout << "a <<= 1; a = " << bitset<4>(a) << " (Binary) or " << a << " (Decimal)" << endl;  
    // 右移等于  
    a >>= 1;  
    cout << "a >>= 1; a = " << bitset<4>(a) << " (Binary) or " << a << " (Decimal)" << endl;  
    // 按位与等于  
    a &= b;  
    cout << "a &= b; a = " << bitset<4>(a) << " (Binary) or " << a << " (Decimal)" << endl;  
    // 按位异或等于  
    a ^= b;  
    cout << "a ^= b; a = " << bitset<4>(a) << " (Binary) or " << a << " (Decimal)" << endl;  
    // 按位或等于  
    a |= b;  
    cout << "a |= b; a = " << bitset<4>(a) << " (Binary) or " << a << " (Decimal)" << endl;  
  
    return 0;  
}

运算结果:
在这里插入图片描述

类型操作符

查看或转换变量的数据类型

// type_operators.cpp
#include <iostream>  
#include <typeinfo> 
  
int main() {  
    int intVar = 10;  
    std::cout << "int的大小: " << sizeof(int) << " bytes" << std::endl;  
    std::cout << "TintVar的类型: " << typeid(intVar).name() << std::endl;  
  
    double* doublePtr = new double(3.14);  
    std::cout << "指针的大小: " << sizeof(doublePtr) << " bytes" << std::endl;  
    std::cout << "指针的类型: " << typeid(doublePtr).name() << std::endl;  
    // 类型转换
    int i = 42;  
    float f = static_cast<float>(i); // static_cast转换  
    const int constInt = 100;  
    int* p = const_cast<int*>(&constInt); // const_cast去除常量性   
    int intValue = 1234;  
    int* intPtr = &intValue;  
    char* charPtr = reinterpret_cast<char*>(intPtr); // reinterpret_cast重新解释类型  
    // 清理动态分配的内存  
    delete doublePtr;  
  
    return 0;  
}

在这里插入图片描述

逻辑操作符

对变量进行 等逻辑操作

#include <iostream>  
using namespace std;  
  
int main() {  
    bool a = true;  
    bool b = false;  
    // 逻辑非  
    bool not_a = !a;  
    cout << "!a = " << not_a << endl;  
    // 逻辑与  
    bool and_result = a && b;  
    cout << "a && b = " << and_result << endl;  
    // 逻辑或  
    bool or_result = a || b;  
    cout << "a || b = " << or_result << endl;  
  
    return 0;  
}

在这里插入图片描述

三目运算符

使用?:符号进行条件运算,例如int max = (a > b) ? a : b; 判断ab的大小,将较大的值赋给max

#include <iostream>  
  
int main() {  
    int x = 5;  
    int y = 10;  
    // 条件 ? 表达式1 : 表达式2   
    int max = (x > y) ? x : y;  
    std::cout << "最大值是: " << max << std::endl;  
  
    return 0;  
}

在这里插入图片描述

比较运算符

用于比较变量之间的大小、是否相等

#include <iostream>  
using namespace std;  
  
int main() {  
    int a = 10;  
    int b = 5;  
  
    // 等于  
    if (a == b) {  
        cout << "a等于b" << endl;  
    } else {  
        cout << "a不等于b" << endl;  
    } 
    // 不等于  
    if (a != b) {  
        cout << "a不等于b" << endl;  
    }  
    // 大于  
    if (a > b) {  
        cout << "a大于b" << endl;  
    }  
    // 小于  
    if (b < a) {  
        cout << "a小于b" << endl;  
    }  
    // 大于或等于  
    if (a >= b) {  
        cout << "a大于等于b" << endl;  
    }  
    // 小于或等于  
    if (b <= a) {  
        cout << "b小于等于a" << endl;  
    }  
  
    return 0;  
}

在这里插入图片描述

算术操作符

对变量进行数学运算

#include <iostream>  
using namespace std;  
  
int main() {  
    int a = 10;  
    int b = 3;  
  
    // 加法  
    int sum = a + b;  
    cout << "a + b = " << sum << endl;  
    // 减法  
    int difference = a - b;  
    cout << "a - b = " << difference << endl;  
    // 乘法  
    int product = a * b;  
    cout << "a * b = " << product << endl;  
    // 除法  
    if (b != 0) {  
        double quotient = static_cast<double>(a) / b;  
        cout << "a / b = " << quotient << endl;  
    }  
    // 取模  
    int remainder = a % b;  
    cout << "a % b = " << remainder << endl;  
    // 自增  
    a++;  
    cout << "a after a++ = " << a << endl;  
    // 自减  
    b--;  
    cout << "b after b-- = " << b << endl;  
  
    return 0;  
}

在这里插入图片描述

位运算符

对变量进行位操作,是对整数在内存中的二进制位进行操作的一种运算方式。

#include <iostream>  
#include <bitset>  
using namespace std;  
  
int main() {  
    unsigned int a = 15; // Binary: 1111  
    unsigned int b = 9;  // Binary: 1001  
    std::cout << "a = " << bitset<4>(a) << ", b = " << bitset<4>(b) << std::endl;
    // 按位与  
    unsigned int and_result = a & b;  
    cout << "a & b = " << bitset<4>(and_result) << endl;  
    // 按位或  
    unsigned int or_result = a | b;  
    cout << "a | b = " << bitset<4>(or_result) << endl;  
    // 按位异或  
    unsigned int xor_result = a ^ b;  
    cout << "a ^ b = " << bitset<4>(xor_result) << endl;  
    // 按位取反  
    unsigned int not_a = ~a;  
    cout << "~a = " << bitset<32>(not_a) << endl; // Assuming a 32-bit unsigned int  
    // 左移  
    unsigned int left_shift = a << 2;  
    cout << "a << 2 = " << bitset<8>(left_shift) << endl;  
    // 右移  
    unsigned int right_shift = a >> 1;  
    cout << "a >> 1 = " << bitset<4>(right_shift) << endl;  
  
    return 0;  
}

在这里插入图片描述

其他操作符

包括逗号操作符,、成员访问操作符.->、作用域解析操作符::、指针相关操作符*&(取地址)、以及sizeof操作符等

#include <iostream>  

void printHello() // 函数声明 printHello(),函数用来打印"Hello, GGBond" 
{  
    std::cout << "Hello, GGBond" << std::endl;  
}  

int main() {  
    int arr[5] = {1, 2, 3, 4, 5};  
    int* ptr = arr; // 隐式使用&操作符,arr是第一个元素的地址  
    std::cout << "arr[0]的地址: " << &arr[0] << std::endl;  
    std::cout << "[0]的值: " << *ptr << std::endl; // 使用*操作符解引用  
  
    // 使用 . 和 -> 操作符访问成员  
    struct ExampleStruct {  
        int x;  
    };  
    ExampleStruct obj;  
    obj.x = 10;  
    ExampleStruct* pObj = &obj;  
    std::cout << "obj.x: " << obj.x << std::endl;  
    std::cout << "pObj->x: " << pObj->x << std::endl;  
  
    // 使用下标操作符 []  
    std::cout << "arr[2]: " << arr[2] << std::endl;  
    
    // 调用函数
    printHello();  
  
    // 使用逗号操作符  
    int a = 1, b = 2, c;  
    c = (a += 2, b += 3, a + b);  
    std::cout << "c: " << c << std::endl; // 逗号操作符返回最后一个表达式的值,所以c的值是8  
  
    // 使用 new 和 delete 操作符  
    int* dynamicInt = new int(5);  
    std::cout << "动态整数的值: " << *dynamicInt << std::endl;  
    delete dynamicInt;  
  
    return 0;  
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值