📜  C++常数字面量(1)

📅  最后修改于: 2023-12-03 14:39:59.500000             🧑  作者: Mango

C++常数字面量

C++常数字面量是指在C++中表示常数的字面语法。在C++11中,引入了许多新的数字面量,可以更方便地表示数值。

整数数字面量

在C++中,可以使用十进制、八进制、十六进制以及二进制表示整数。

  • 十进制:默认情况下,整数字面量被视为十进制。例如:1234-5678
  • 八进制:整数数字面量以前缀0开头。例如:0123-0765
  • 十六进制:整数数字面量以前缀0x开头。例如:0xABC-0x123
  • 二进制:整数数字面量以前缀0b或0B开头(C++14中新增)。例如:0b1010-0B1111
int a = 42;   // 十进制整数常量
int b = 0123; // 八进制整数常量
int c = 0xABC; // 十六进制整数常量
int d = 0b1010; // 二进制整数常量(C++14中)
浮点数字面量

浮点数字面量可以表示小数,其包含整数部分、小数点、小数部分、指数部分等。

  • 普通表示:由数字组成的小数(整数部分可省略)及指数部分。
    • 指数部分以'e'或'E'开始,后跟正负整数。例如:12.34e5-1.23E-4
  • 十六进制表示:由0x0X,后跟十六进制小数及十六进制指数组成。例如:0x1.2p3-0x3.2P-4
double a = 1.23;     // 普通浮点数常量
double b = -4.56e7;  // 科学计数法浮点数常量
double c = 0x1.2p3;  // 十六进制浮点数常量
布尔数字面量

C++中的布尔类型只有两种值:truefalse。在C++中,也可以使用整型的01来表示布尔类型的值。

bool a = true;  // 布尔数常量true
bool b = false; // 布尔数常量false

int c = 1;      // 整数1表示true
int d = 0;      // 整数0表示false
字符数字面量

在C++中,字符数字面量用于表示单个字符的值。其有两种表示方式:一种是使用字符本身,一种是使用字符的ASCII码值。

  • 使用字符本身:单引号括起来的一个字符。例如:'a''='
  • 使用ASCII码值:单引号括起来的一个反斜线\后跟一个数字表示该字符的ASCII码值。例如:'\n''\x41'
char a = 'A';      // 字符'A'
char b = '=';      // 字符'='
char c = '\n';     // 换行符
char d = '\x41';   // 字符'A'
字符串数字面量

在C++中,字符串数字面量用于表示一个字符串,其由多个字符组成。字符串数字面量使用双引号括起来。

string str1 = "Hello, World!";   // 字符串常量
string str2 = "I'm a coder.";   // 字符串常量
用户定义字面量

C++11提供了用户定义字面量(User-Defined Literals),其允许用户创建自己的数字字面量。用户定义字面量由以下4部分组成:前缀、数值、后缀、操作符。

  • 前缀:任何以一个下划线开头的标识符。
  • 数值:数字。
  • 后缀:任何以一个下划线结尾的标识符。
  • 操作符:任何内置运算符。
long double operator "" _deg(long double deg)
{
    return deg * 3.141592 / 180;  // 将度数转换为弧度
}

long double a = 180.0_deg;  // 180度转换为弧度