• C++ 修饰符类型


    C++ 允许在 char、int 和 double 数据类型前放置修饰符。

    修饰符是用于改变变量类型的行为的关键字,它更能满足各种情境的需求。

    下面列出了数据类型修饰符:

    • signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。

    • unsigned:表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。

    • short:表示变量的范围比 int 更小。short int 可以缩写为 short。

    • long:表示变量的范围比 int 更大。long int 可以缩写为 long。

    • long long:表示变量的范围比 long 更大。C++11 中新增的数据类型修饰符。

    • float:表示单精度浮点数。

    • double:表示双精度浮点数。

    • bool:表示布尔类型,只有 true 和 false 两个值。

    • char:表示字符类型。

    • wchar_t:表示宽字符类型,可以存储 Unicode 字符。

    修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。

    这些修饰符也可以组合使用,修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int

    C++ 允许使用速记符号来声明无符号短整数无符号长整数。您可以不写 int,只写单词 unsigned、short 或 longint 是隐含的。例如,下面的两个语句都声明了无符号整型变量。

    1. signed int num1 = -10; // 定义有符号整型变量 num1,初始值为 -10
    2. unsigned int num2 = 20; // 定义无符号整型变量 num2,初始值为 20
    3. short int num1 = 10; // 定义短整型变量 num1,初始值为 10
    4. long int num2 = 100000; // 定义长整型变量 num2,初始值为 100000
    5. long long int num1 = 10000000000; // 定义长长整型变量 num1,初始值为 10000000000
    6. float num1 = 3.14f; // 定义单精度浮点数变量 num1,初始值为 3.14
    7. double num2 = 2.71828; // 定义双精度浮点数变量 num2,初始值为 2.71828
    8. bool flag = true; // 定义布尔类型变量 flag,初始值为 true
    9. char ch1 = 'a'; // 定义字符类型变量 ch1,初始值为 'a'
    10. wchar_t ch2 = L'你'; // 定义宽字符类型变量 ch2,初始值为 '你'

    为了理解 C++ 解释有符号整数和无符号整数修饰符之间的差别,我们来运行一下下面这个短程序:

    实例

    1. #include
    2. using namespace std;
    3. /*
    4. * 这个程序演示了有符号整数和无符号整数之间的差别
    5. */
    6. int main()
    7. {
    8. short int i; // 有符号短整数
    9. short unsigned int j; // 无符号短整数
    10. j = 50000;
    11. i = j;
    12. cout << i << " " << j;
    13. return 0;
    14. }

    当上面的程序运行时,会输出下列结果:

    -15536 50000

    上述结果中,无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。

    C++ 中的类型限定符

    类型限定符提供了变量的额外信息,用于在定义变量或函数时改变它们的默认行为的关键字

    限定符含义
    constconst 定义常量,表示该变量的值不能被修改。
    volatile修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。。
    restrict由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。
    mutable表示类中的成员变量可以在 const 成员函数中被修改。
    static用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。
    register用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。

    const 实例

    1. const int NUM = 10; // 定义常量 NUM,其值不可修改
    2. const int* ptr = &NUM; // 定义指向常量的指针,指针所指的值不可修改
    3. int const* ptr2 = &NUM; // 和上面一行等价

    volatile 实例

    volatile int num = 20; // 定义变量 num,其值可能会在未知的时间被改变

    mutable 实例

    1. class Example {
    2. public:
    3. int get_value() const {
    4. return value_; // const 关键字表示该成员函数不会修改对象中的数据成员
    5. }
    6. void set_value(int value) const {
    7. value_ = value; // mutable 关键字允许在 const 成员函数中修改成员变量
    8. }
    9. private:
    10. mutable int value_;
    11. };

    static 实例

    1. void example_function() {
    2. static int count = 0; // static 关键字使变量 count 存储在程序生命周期内都存在
    3. count++;
    4. }

    register 实例

    1. void example_function(register int num) {
    2. // register 关键字建议编译器将变量 num 存储在寄存器中
    3. // 以提高程序执行速度
    4. // 但是实际上是否会存储在寄存器中由编译器决定
    5. }

    以上就是本期所有内容了 谢谢

    希望各位大佬们点个赞👍吧!!!求求啦~~~
    关注+点赞超过100个立马更新哦!
    版权声明:本文为CSDN博主「ian20120124_」的原创文章,如需转载,请通知CSDN博主「ian20120124_」。


  • 相关阅读:
    TFT-LCD显示中英文
    04 Python MyQR 两行代码生成专属二维码自定义内容
    数据库中常见的六种约束,有一种MySql不支持,你知道是哪个吗?
    基于Python的(拍照签到+网课在线检测)深度学习的人脸识别系统
    闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
    21年6月阿里巴巴Java暑期实习面经回顾(已上岸)
    内存泄漏定位工具之 valgrind 使用
    文件分片上传
    不同类型的球幕影院对观影体验有何影响?
    自动定时删除磁盘文件的脚本(从文件日期最早的开始删)
  • 原文地址:https://blog.csdn.net/ian20120124_/article/details/134318696