C++11新特性——1.1-1.3 字符串原始字面量,超长整型long long,类成员变量的快速初始化
- 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:
- 通过初始化列表指定的值 会覆盖 就地初始化时指定的值。(如果一个变量既被就地初始化 又在初始化列表被初始化,那么它的值首先是就地初始化的值,然后变成初始化列表指定的值)(就地初始化 先于 初始化列表)
(链接文章的最下面部分)
(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)