给 long long c++ 赋值时应该使用 LL

Should I use LL when assigning a value to long long c++

在 C++ 中为 long long 赋值时,我应该始终使用 LL 吗?

假设我有

long long myVar = 10LL;

或者如果我有一个long long类型的成员变量,我应该总是使用LL吗?

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

不写LL或写L可能有什么危险?

已编辑 从答案、评论和进一步谷歌搜索来看,这种情况很危险

m_myVar = 1000000000 * 100;

如果 LL 将被遗忘 1000000000100 将发生溢出。

在此代码段中

long long myVar = 10LL;

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

至于这段代码

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

那么最好使用后缀,因为在这种情况下代码的reader可以确定数据成员的类型m_myVar。这是自我记录的可取之处。:)

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

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

但有时,尤其是在使用模板时,您需要让编译器知道您需要的文字类型。

例如,如果 a 是一个 unsigned 那么 std::max(a, 1) 将失败,因为 1 是一个有符号类型:你需要写 1U 或类似的东西.