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

T M*_*T M 3 c++ declaration c++11 c++14

在C++中LL赋值时我应该总是使用long long吗?

假设我有

long long myVar = 10LL;
Run Code Online (Sandbox Code Playgroud)

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

A::A()
    : m_myVar(0LL)
{
}
Run Code Online (Sandbox Code Playgroud)

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

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

m_myVar = 1000000000 * 100;
Run Code Online (Sandbox Code Playgroud)

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

Bat*_*eba 7

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

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

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

例如,如果a是,unsigned那么std::max(a, 1)将失败,因为1是签名类型:您需要编写1U或类似的东西.


Vla*_*cow 5

在此代码段中

long long myVar = 10LL;
Run Code Online (Sandbox Code Playgroud)

没有必要指定后缀LL.代码是安全的.使用了通常的算术转换.

至于这段代码片段

A::A()
    : m_myVar(0LL)
{
}
Run Code Online (Sandbox Code Playgroud)

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