在为long long c ++分配值时,我应该使用LL吗?

时间:2016-02-11 13:41:51

标签: c++ c++11 declaration c++14

在C ++中为LL分配值时,我是否应始终使用long long

假设我有

long long myVar = 10LL;

或者如果我有long long类型的成员变量,我应该始终使用LL吗?

A::A()
    : m_myVar(0LL)
{
}

不写LL或写L会有什么危险?

EDITED 从答案,评论和进一步谷歌搜索危险是这样的情况

m_myVar = 1000000000 * 100;

如果LL1000000000忘记100,则会发生溢出。

2 个答案:

答案 0 :(得分:7)

不,你不需要这样做。 C ++编译器将进行转换。

(为避免疑问,long long a = 5000000000; 在具有32位intlong的平台上定义良好。)

有时候,特别是当您使用模板时,您需要让编译器知道您需要的文字类型。

例如,如果aunsigned,则std::max(a, 1)将失败,因为1是签名类型:您需要编写1U或类似内容。< / p>

答案 1 :(得分:5)

在此代码段中

long long myVar = 10LL;

无需指定后缀LL。代码是安全的。使用了通常的算术转换。

至于此代码段

A::A()
    : m_myVar(0LL)
{
}

然后需要使用后缀,因为在这种情况下,代码的读者可以确定数据成员m_myVar的类型。这是自我记录的理想选择。:)