我不明白为什么这给了我同样的答案:
long long a = 3265917058 >> 24;
std::cout << a << std::endl; //194
long long ip = 3265917058;
long long b = ip >> 24;
std::cout << b << std::endl; //194
Run Code Online (Sandbox Code Playgroud)
但这不是:
long long a = (3265917058 << 16) >> 24;
std::cout << a << std::endl; //240
long long ip = 3265917058;
long long b = (ip << 16) >> 24;
std::cout << b << std::endl; //12757488 - **i want this to be 240 too!**
Run Code Online (Sandbox Code Playgroud)
更新:我想要32位移位,但是我怎么能移动一个对于int变量来说太大的数字呢?Update2:我的答案是使unsigned int ip.那一切都会好的.
你的文字常数3265917058是int.添加LL后缀以获得预期的行为(u)r:
long long a = (3265917058LL << 16) >> 24;
Run Code Online (Sandbox Code Playgroud)