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被遗忘1000000000或100 溢出将发生.
不,你不需要这样做.C++编译器将进行转换.
(为了避免疑问的,long long a = 5000000000; 是具有32位的平台上定义良好的int和long).
有时候,特别是在使用模板时,您需要让编译器知道您需要的文字类型.
例如,如果a是,unsigned那么std::max(a, 1)将失败,因为1是签名类型:您需要编写1U或类似的东西.
在此代码段中
long long myVar = 10LL;
Run Code Online (Sandbox Code Playgroud)
没有必要指定后缀LL.代码是安全的.使用了通常的算术转换.
至于这段代码片段
A::A()
: m_myVar(0LL)
{
}
Run Code Online (Sandbox Code Playgroud)
然后希望使用后缀,因为在这种情况下,代码的读者可以确定数据成员的类型m_myVar.这是自我记录的理想选择.:)
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |