免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: uusky_cu
打印 上一主题 下一主题

关于数组初始化的问题,问题相当有挑战!绝对不忽悠,请进! [复制链接]

论坛徽章:
0
81 [报告]
发表于 2011-08-29 22:23 |只看该作者
回复 80# starwing83


兄台,何故叹气???

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
82 [报告]
发表于 2011-08-29 23:22 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
83 [报告]
发表于 2011-08-30 09:09 |只看该作者
回复 81# uusky_cu

我在很早几楼就提出来了,C标准说明了数组的初始化顺序是不可预期的(unspecified,详情问pmerofc或者KBTiller),也就是说,你写的代码C标准根本就不保证在不同的编译器下有相同的结果。

论坛徽章:
0
84 [报告]
发表于 2011-08-30 09:17 |只看该作者
没看出这个老外说出什么新东西
pmerofc 发表于 2011-08-29 23:22


您讲的太客气了

论坛徽章:
0
85 [报告]
发表于 2011-08-30 09:25 |只看该作者
他说他并不感觉到惊讶,因为C标准没有规定这些东西,所以如果这些代码在你的编译器上能工作也是正常的,不过请注意可移植性!

我个人认为这是62楼和68楼发言的委婉版

论坛徽章:
0
86 [报告]
发表于 2011-08-30 18:01 |只看该作者
本帖最后由 uusky_cu 于 2011-08-30 18:22 编辑

是啊,我知道赋值表达式右边的值在赋值动作之前,必须要确定嘛!用他的话说:the right hand side must be evaluated before the assignment can occur。我只是觉得数组初始化常规不都是从0到n吗?为啥我那样做了以后,Gcc就会不一样呢?他就说C标准没有定义这些东西嘛!我就问他有啥办法达到那样效果,他结果用的宏定义……汗!哈哈……让各位看官失望了,我是无奈啊……

其实最初,我不是这个意思。我是想要编译器自动帮在.data段,组织好这样的数据。也就是要求这个数组是全局的,或者是static类型的。如果是这样的,int a[5]={1,2,3,a[2],a[1]+a[0]};会不通过语法编译的,因为不能用变量来初始化全局变量。所以我问他时,说明了这点要求,所以想想他提供了宏定义的方法也是比较合理的。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
87 [报告]
发表于 2011-08-30 21:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
88 [报告]
发表于 2011-08-31 15:45 |只看该作者
大家都是牛人啊,看完整楼,收获蛮多咧,虽然还是有很多没看懂的说。。

论坛徽章:
0
89 [报告]
发表于 2011-09-02 11:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
90 [报告]
发表于 2011-09-02 14:12 |只看该作者
我在想,这帖子都这么多楼了,怎么就没人想到先用某个脚本或者C什么的去生成一个有合适数据的.c文件用于编译 ...
starwing83 发表于 2011-08-26 17:50



    这唯一靠谱和实用的方法咋都没人提了?我看着都着急。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP