哪里出错了哦?一段位字段结构体运算的程序
程序如下:#include<stdio.h>
struct flag{
unsigned class_x:1;
unsigned class_y:2;
unsigned :0;
unsigned class_z:1;
}
input(char *str){
int bits;
printf("请输入位字段%s的值:",str);
scanf("%d",&bits);
return bits;
}
void main(){
struct flag flag1,*pdf=flag1;
unsigned modword;
flag1.class_x=input("class_x");
pdf->class_y=input("class_y");
pdf->class_z=input("class_z");
modword=pdf->class_x^pdf->class_z;
printf("flag1的位字段class_y的结果为:%u\n",pdf->class_y);
printf("flag1的位字段class_x和class_z异或的结果为:%u\n",modword);
}
错误提示:
1>------ 已启动生成: 项目: lianxi, 配置: Debug Win32 ------
1>正在编译...
1>practice.cpp
1>d:\c++源文件\lianxi\lianxi\practice.cpp(11) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 参见“scanf”的声明
1>d:\c++源文件\lianxi\lianxi\practice.cpp(12) : error C2440: “return”: 无法从“int”转换为“flag”
1> 无构造函数可以接受源类型,或构造函数重载决策不明确
1>d:\c++源文件\lianxi\lianxi\practice.cpp(15) : error C2440: “初始化”: 无法从“flag”转换为“flag *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\c++源文件\lianxi\lianxi\practice.cpp(17) : error C2440: “=”: 无法从“flag”转换为“unsigned int”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\c++源文件\lianxi\lianxi\practice.cpp(18) : error C2440: “=”: 无法从“flag”转换为“unsigned int”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\c++源文件\lianxi\lianxi\practice.cpp(19) : error C2440: “=”: 无法从“flag”转换为“unsigned int”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>生成日志保存在“file://d:\C++资料\C++源文件\lianxi\lianxi\Debug\BuildLog.htm”
1>lianxi - 5 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========