今天遇到一个结构体赋值问题!求解
时间:2010-07-26
来源:互联网
struct stu
{
int i;
}st1;
st1.i=9;
int main()
{
}
编译提示 sti.i=9;出错。
达人解释下。
作者: shaohui973 发布时间: 2010-07-26
#include<>
int i;
i=9;
int main()
{
}
作者: shaohui973 发布时间: 2010-07-26

作者: shaohui973 发布时间: 2010-07-26
#include<stdio.h>
struct stu
{
int i;
}st1;
int main()
{
st1.i=9;
}
或者:
struct stu
{
int i;
}st1={.i = 9};
int main()
{
}
作者: wmmy2008 发布时间: 2010-07-26
c的标准有关吧,
st1.i 不是标准类型,编译器不能识别,程序体外要么函数申明或者类型定义的,st1.i不是标准的类型所以不能识别吧;
变量初始化是需要在函数中执行的~~
至于i=9为什么能执行这个可能和具体的编译器有关和c标准有关吧,不知道是不是所有的c都能编译过。
我认为c能编译过是c编译器原因,把代码进行优化,还是执行int i=9;这个操作~~~
作者: zbhddt6 发布时间: 2010-07-26
作者: zbhddt6 发布时间: 2010-07-26
第一个错就不用说了
第二个之所以还能编译过去是因为编译器把"i=9"当成未指定类型的定义了,默认设成int.所以勉强通过
作者: liwangli1983 发布时间: 2010-07-26
第一个错就不用说了
第二个之所以还能编译过去是因为编译器 ...
liwangli1983 发表于 2010-07-26 21:39
正解
作者: zhangsuozhu 发布时间: 2010-07-26
第一个明显不是。
可以实验一下,呵呵。
作者: pandaiam 发布时间: 2010-07-26
第一个错就不用说了
第二个之所以还能编译过去是因为编译器 ...
liwangli1983 发表于 2010-07-26 21:39
实验了一下,发现这个是对的。
i= .... 这里默认把i当作int形变量了,int正好和前面定义的 int i是一样的,所以会通过,但还是有警告。
float i,然后 i = 0.1,这个时候还是会把i当作int型,此时int和前面的float类型冲突,然后就会报错了。
作者: pandaiam 发布时间: 2010-07-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28