问题What does the "L" mean at the end of an integer literal?描述了L
在int literal末尾的含义。我很困惑为什么不指定long int i = 33
而不是int i = 33L
?同样的事情适用于其他类型。而不是指定double b = 3.0L
为什么不写long double
?
答案 0 :(得分:2)
我很困惑为什么不指定long int i = 33而不是int i = 33L?
因为这两个陈述意味着两件不同的事情:
long int i = 33; // take constant of type int, convert it to long int and assign to i.
int i = 33L; // take constant of type long int, convert it to int and assign to i.
所以你最终得到了不同类型的变量i
。对于示例中的double,也是如此。
答案 1 :(得分:1)
虽然在许多情况下,您可以依赖极其明确定义的扩展转换规则,但有时您需要明确说明文字的类型。
例如
long double f = 1.0;
f = std::max(f, 2.0L);
除非max
的参数具有相同的类型,否则不会编译。写double b = 3.0L
确实毫无意义,编译器几乎肯定会忽略你并编译double b = 3.0
。