C++11新特性——1.1-1.3 字符串原始字面量,超长整型long long,类成员变量的快速初始化

发布时间 2023-08-18 20:57:34作者: 我会变强的
  • 1.1 字符串原始字面量
  • 1.2 超长整型long long
  • 1.3 类成员变量的快速初始化
  • 1.1 原始字面量

链接:https://subingwen.cn/cpp/R/

语法 R"xxx(原始字符串)xxx"

原始字面量 表示 固定的值。

原子字面量 两大类型:数字类型,字符串类型

(一个小补充)多行字符串的空格问题:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string str = R"(<html>
<head>
        <title>
        海贼王
        </title>
        </head>
        <body>
        <p>
我是要成为海贼王的男人!!!
        </p>
        </body>
        </html>)";
    cout << str << endl;

    return 0;
}

res:

  

多行字符串中,前面的空格(或制表符)是要被打印出来的!

 

  • 1.2 超长整型 long long

链接:https://subingwen.cn/cpp/longlong/

补充:

  • unsigned long long 最小值为 0
  • 对于一个字节占8位的系统,unsigned long long 的取值范围为 0 ~ 2^64-1,long long 的取值范围为 -2^63 ~ 2^63-1
  •  

signed char   1个字节

short int   2个字节

int  4个字节

long int  32位4个字节,64位8个字节

long long int  至少8个字节

  • 什么是 标准整型 自定义整型
int a=10;
typedef int int123;
int123 b=20;

通过 typedef 就定义了一个自定义类型的整型(上面示例中 int123 等价于 int)

  • (示例)有符号的需要转换为无符号的
#include<iostream>
using namespace std;

int main() {
	// 有符号转换为无符号
	int a = -1;
	int c = -200;
	cout << "a = " << a << endl;
	unsigned int b = a;
	cout << "b(a) = " << b << endl;
	b = c;
	cout << "b(c) = " << b << endl;
	
	return 0;
}

res:

  

2^32 = 4,294,967,296

如果有符号的数 >= 0,那么转为无符号时结果不变;如果有符号数 < 0,那么转为无符号时 -1 为有符号最大的数,-2、-3...依次递减

 

  • 1.3 类成员变量的快速初始化

链接:https://subingwen.cn/cpp/quick_init/

  • C++11中,可以直接在类内部进行初始化的类型:

1. 常量

2. 非静态成员变量

3. const static(静态成员常量)

4. 整型或枚举类型的 静态常量成员(static const)

class Base {
public:
	const int a = 10;	// 常量
	int b = 10;		// 非静态成员变量
	const static int c = 10;	// 静态成员常量 
	static const int d = 10;	// 整型或枚举类型 的 静态常量成员 可以在类内部直接初始化 
	// static const double e = 3.14;	// 静态常量成员 不可在类内部初始化
	static const double e;
};
const double Base::e = 10.0;

(枚举类型)

#include <iostream>
using namespace std;

// 枚举类型定义
// 默认情况下,枚举器(Spring Summer...)的值从0开始递增
// 也可以显示的定义枚举器的值 Spring = 1, Summer = 2,后面没有定义的值 从最后一个定义了值的递增
// ★★★
enum Season {
    Spring = 3,
    Summer = 2,
    Autumn,
    Winter,
};

int main() {
    cout << "Spring = " << Spring << endl;
    cout << "Summer = " << Summer << endl;
    cout << "Autunm = " << Autumn << endl;
    cout << "Winter = " << Winter << endl;

    return 0;
}

res:

  

  • 通过初始化列表指定的值覆盖 就地初始化时指定的值。(如果一个变量既被就地初始化 又在初始化列表被初始化,那么它的值首先是就地初始化的值,然后变成初始化列表指定的值)(就地初始化 先于 初始化列表

链接文章的最下面部分)

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)