📜  C / C++中的整数字面量(前缀和后缀)

📅  最后修改于: 2021-05-25 19:41:30             🧑  作者: Mango

整数字面量是一个整数,其值在源代码直接表示的类型的字面量。例如,在赋值语句x = 1中,字符串1是指示值1的整数字面量,而在语句x = 0x10中,字符串0x10是指示值16(以十进制表示)的整数字面量十六进制的10(由0x前缀指示)。
此外,在x =“ 1”中,“ 1”是字符串字面量(不是字符或整数字面量),因为它用引号引起来。字符串的值为1,恰好是整数字符串。

整数字面量有两种类型,即

  1. 表示基数的前缀。例如, 0x10表示十六进制的值16 ,前缀为0x
  2. 表示类型的后缀。例如,12345678901234LL表示作为长长整型具有后缀LL的值12345678901234。

句法

  • 前缀:它们基本上代表四种类型。
    1. 十进制数(以10为基数) :-非零十进制数字,后跟零个或多个十进制数字(0、1、2、3、4、5、6、7、8、9)。例如56、78
    2. 八进制字面量(以8为底) :-零后跟零个或多个八进制数字(0、1、2、3、4、5、6、7)。例如045、076、06210
    3. 十六进制数(以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
    4. Binary-literal(base 2) :-0b或0B,后跟一个或多个二进制数字(0,1)。例如0b101、0B111
  • 后缀:根据它们的数据类型,它们以多种方式表示。
    1. int :-不需要后缀,因为默认情况下将整数常量分配为int数据类型。
    2. unsigned int :整数常量末尾的字符u或U。
    3. long int :整数常数末尾的字符l或L。
    4. unsigned long int :整数常量末尾的字符ul或UL
    5. long long int :整数常数末尾的字符ll或LL
    6. 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基础课程》。