我能做什么(以编程方式)摆脱警告?
...
unsigned long long v=(unsigned long long)0xffffeeeeddddcccc;
...
g++ main.cpp -o main
main.cpp:6: warning: integer constant is too large for ‘long’ type
Run Code Online (Sandbox Code Playgroud)
但是当我运行程序时,一切都很好,如预期的那样:
./main
sizeof(unsigned long long)==8
value of v==0xffffeeeeddddcccc
Run Code Online (Sandbox Code Playgroud)
使用环境:
编辑:这是完整和可编译的main.cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main(void) {
unsigned long long v=(unsigned long long)0xffffeeeeddddcccc;
const unsigned v_size = sizeof(unsigned long long);
cout << "sizeof(unsigned long long)==" << v_size << endl;
cout << "value of v==0x" << setw(v_size) << setfill('0') << hex << v << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*sky 12
根据C++标准2.13.1/2:
整数文字的类型取决于其形式,值和后缀.如果它是十进制且没有后缀,则它具有这些类型中的第一个,其值可以表示为:
int,long int; 如果该值不能表示为long int,则行为未定义.
新的C++标准允许使用ull后缀.g ++ 4.4.1支持此后缀以及Visual C++ 2008.您可以按如下方式使用它:
unsigned long long v=0xffffeeeeddddccccULL;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7165 次 |
| 最近记录: |