整数字面量是一个整数,其值在源代码直接表示的类型的字面量。例如,在赋值语句x = 1中,字符串1是指示值1的整数字面量,而在语句x = 0x10中,字符串0x10是指示值16(以十进制表示)的整数字面量十六进制的10(由0x前缀指示)。
此外,在x =“ 1”中,“ 1”是字符串字面量(不是字符或整数字面量),因为它用引号引起来。字符串的值为1,恰好是整数字符串。
整数字面量有两种类型,即
- 表示基数的前缀。例如, 0x10表示十六进制的值16 ,前缀为0x 。
- 表示类型的后缀。例如,12345678901234LL表示作为长长整型具有后缀LL的值12345678901234。
句法
- 前缀:它们基本上代表四种类型。
- 十进制数(以10为基数) :-非零十进制数字,后跟零个或多个十进制数字(0、1、2、3、4、5、6、7、8、9)。例如56、78 。
- 八进制字面量(以8为底) :-零后跟零个或多个八进制数字(0、1、2、3、4、5、6、7)。例如045、076、06210 。
- 十六进制数(以16为基数) :-0x或0X后跟一个或多个十六进制数字(0、1、2、3、4、5、6、7、8、9,a,b,b,c, C,d,D,e,E,f,F)。例如, 0x23A,0Xb4C,0xFEA 。
- Binary-literal(base 2) :-0b或0B,后跟一个或多个二进制数字(0,1)。例如0b101、0B111 。
- 后缀:根据它们的数据类型,它们以多种方式表示。
- int :-不需要后缀,因为默认情况下将整数常量分配为int数据类型。
- unsigned int :整数常量末尾的字符u或U。
- long int :整数常数末尾的字符l或L。
- unsigned long int :整数常量末尾的字符ul或UL 。
- long long int :整数常数末尾的字符ll或LL 。
- unsigned long long int :整数常量末尾的字符ull或ULL 。
// C++ program to demonstrate the use of
// integer literal
#include
using namespace std;
int main()
{
// PREFIXES
cout << 213 << '\n' // decimal integer literal
<< 0213 << '\n' // Octal integer literal
<< 0x213A << '\n' // hexadecimal integer literal
<< 0b101 << '\n' // binary integer literal
// SUFFIXES
// long long literal
<< 1234567890123456789LL << '\n'
// unsigned long long literal
<< 12345678901234567890ull << '\n'
// automatic conversion of unsigned long long even
// without long long prefix
<< 12345678901234567890u;
return 0;
}
Output:
213
139
8506
5
1234567890123456789
12345678901234567890
12345678901234567890
1221300
数字分隔符:在C++中,整数字面量可能包含数字分隔符,以允许将数字分组为更具可读性的形式。这对于位字段特别有用,并且通过对位进行计数而不是对数字进行计数,一眼即可看到大数(例如一百万)的大小。对于通常分组的号码(例如信用卡号或社会保险号),它也很有用。[a]通过加倍分隔符,可以将非常长的号码进一步分组。
通常,十进制数(以10为底)分为三个数字组(代表1000个可能值之一),二进制数(以2为底)分为四个数字组(一个半字节,代表16个可能值之一)和十六进制数(以两位数为基数的基数(以16为基数)(每个数字是一个半字节,所以两个数字是一个字节,代表256个可能值之一)。其他系统的编号(例如id编号)将按照使用的约定进行分组。
// C++ program to demonstrate digit separator
#include
using namespace std;
int main()
{
cout << 12345678901245LL <<'\n'
// long long int literal digit separator
<< 12'345'678'901'245LL <<'\n'
// binary literal digit separator
<< 0b1000'111'0 <<'\n'
// hexadecimal literal digit separator
<< 0X12A'2b4;
return 0;
}
Output:
12345678901245
12345678901245
142
1221300
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。