无忧启动论坛
标题:
求助:C语言64位移位问题-成功
[打印本页]
作者:
wynew8au
时间:
2018-4-28 09:28
标题:
求助:C语言64位移位问题-成功
本帖最后由 wynew8au 于 2018-4-28 10:03 编辑
VS2017 显示
warning C4334: “<<”: 32 位移位的结果被隐式转换为 64 位(是否希望进行 64 位移位?)
已经成功,强制转换为 unsigned long
求助大师,这个 64 位移位 究竟怎么移?
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
BYTE xx=2;
LPBYTE lpBits=&xx;
WORD biBitCount=1;
lpBits += (1 << (biBitCount));
cout<<"Hello World!"<<endl;
//cout<<lpBits<<endl;
system("pause");
return 0;
}
作者:
不点
时间:
2018-4-28 10:11
如果 WORD 是 16 位,那么 biBitCount 就是 16 位的,因而 (1<<(biBitCount)) 也是 16 位的。但 lpBits 是 64 位的,所以给出警告(只是提醒罢了;“警告” 不是 “错误”,编译通过了)。我猜如果你把 biBitCount 定义为 64 位整数 (比如 uint64_t 或 unsigned long long 之类的),就不会警告了。
作者:
wynew8au
时间:
2018-4-28 10:16
不点 发表于 2018-4-28 10:11
如果 WORD 是 16 位,那么 biBitCount 就是 16 位的,因而 (1
谢谢大师的解释。
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3