整数类型的后缀

时间:2019-12-09 21:04:01

标签: c integer

为什么对整数类型使用后缀? 后缀可以确定整数类型吗?

e.g.

long int a;
a = 50000LL;

变量是现在的长整数还是长整数?

2 个答案:

答案 0 :(得分:3)

  

为什么对整数类型使用后缀?

定义最小宽度类型并使unsigned为常数。

  

后缀可以确定整数类型吗?

是的。 u表示某些 unsigned 类型。在宏处理中也很有用。

lll至少指示longlong long类型。对于宏处理(在intmax_t/uintmax_t

中完成的预处理算术运算)无用

也可以进行位移(假设32位int1u << 311 << 31是UB(移到符号位)。 @Eugene Sh.

// Assume `long` is 32-bit
long long x = 12345678912345L; // Constant is LL due to range.
long long y = 1000LL * 1000 * 1000 * 1000; // y gets the expected value
long long z = 1000L * 1000 * 1000 * 1000; // UB due to int overflow.
  

变量是现在的长整数还是长整数?

a被声明为long int。其类型不会因任何分配而更改。

答案 1 :(得分:0)

为什么对整数类型使用后缀?后缀可以确定整数类型吗?

From here:

  

... Integer文字是一种整数,其值为   直接在源代码中表示...

  • 前缀:它们基本上代表四种类型。
    1)十进制(以10为底) :- a non-zero decimal digit followed by zero or more decimal digits(0, 1, 2, 3, 4, 5, 6, 7, 8, 9). For example, 56, 78.

    2) Octtal-literal(base 8) :- a zero followed by zero or more octal digits(0, 1, 2, 3, 4, 5, 6, 7). For example, 045, 076, 06210.
    3)十六进制(基数16) :- 0x or 0X followed by one or more hexadecimal digits(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, A, b, B, c, C, d, D, e, E, f, F). For example, 0x23A, 0Xb4C, 0xFEA.
    4)二进制文字(基数2) :- 0b or 0B followed by one or more binary digits(0, 1). For example, 0b101, 0B111.

  • 后缀:根据其数据类型以多种方式表示。
    1) int :-不需要后缀,因为默认情况下将整数常量分配为int数据类型。
    2) unsigned int :整数常量末尾的字符u或U。
    3) long int :整数常量末尾的字符l或L。
    4)无符号长整数:整数常量末尾的字符ul或UL。
    5) long long int :整数常量末尾的字符ll或LL。
    6) unsigned long long int :字符ull或整数常量末尾的ULL。