请各位高手解答一下c++中的这句话是什么意思啊?

来源:百度知道 编辑:UC知道 时间:2024/05/29 10:07:02
我编了如下的一个程序:
#include <iostream>
using namespace std;
int main(int argc,char **argv)
{
struct i
{
unsigned char a:1;
unsigned char b:2;
}i;
cout<<i.a<<endl<<i.b<<endl;
return 0;
}
但是运行的时候为什么系统会提示我说(见图),为什么啊?备注:我用的是VS2008

struct i //第一个i
{
unsigned char a:1;
unsigned char b:2;
}i; //第二个i
所以语句cout<<i.a<<endl<<i.b<<endl;中的i系统以为是结构名称;
修改办法
struct i1
{
unsigned char a:1;
unsigned char b:2;
}i2;
cout<<i1.a<<endl<<i1.b<<endl;

你得i没有赋值就用,vc认为这是一个错误,这是vc的运行安全检查

加几句:
i.a = 1;
i.b = 3;

struct i
{
unsigned char a:1;
unsigned char b:2;
}i; 的意思是给a分配1bit,给b分配2bit

struct i(这个i和下面的)
{
unsigned char a:1;
unsigned char b:2;
}i(这个i重复使用);