编程论坛
注册
登录
编程论坛
→
C++教室
移位的问题
black423
发布于 2009-08-13 15:09, 425 次点击
unsigned long flag;
int i;
for(i=0;i<=30;i++)
flag=0x01<<i;
我想问一下,为什么到i=15的时候就flag=FFFF8000了,这个时候应该是flag=00008000啊!
3 回复
#2
black423
2009-08-13 15:19
问题已解决
unsigned long flag,mm=0x01;
int i;
for(i=0;i<=30;i++)
flag=mm<<i;
这样结果就正确了 .
#3
xufen340
2009-08-13 15:50
#include<iostream>
using namespace std;
int main()
{
unsigned long flag;
int i;
for(i=0;i<=30;i++) {
if(i==15){
flag=0x01<<i;
cout<<"0x"<<hex<<flag;}
else flag=0x01<<i;
}
return 0;
}
是0x8000啊,你可以看结果。
#4
black423
2009-08-14 08:50
我用的是BC3.1,0x01被默认是int型的了,只能移15位,超过了就都变成0了,需要从新定义个unsigned long 型的参数.
1