免费注册 查看新帖 |

Chinaunix

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

[C] 有多少C程序员认为这是错误的写法 [复制链接]

论坛徽章:
0
111 [报告]
发表于 2012-05-13 06:10 |只看该作者
回复 106# walleeee


    蹭得累。。。

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

论坛徽章:
0
113 [报告]
发表于 2012-05-13 11:43 |只看该作者
本帖最后由 AD8018 于 2012-05-13 11:44 编辑

蛋疼,看来有人不认可下面这个等式。

  1. T  a[2];
  2. (char *)&a[0] + sizeof(a[0]) == (char *)&a[1]
复制代码

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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
115 [报告]
发表于 2012-05-13 12:41 |只看该作者
幻の上帝 发表于 2012-05-13 05:39
回复 76# OwnWaterloo
对。很多时候不只是ISO C的问题了。但既然混不进ISO JTC1/SC22/WG14内部,那只能盯着既定事项干瞪眼。
但上层解决不了的问题,实际解决的话,也不是非要到底层解决。因为解决了,你也很难评估可行性。回避通常更节约时间。
就LZ的例子,float score[20]就会少根筋么。


是呀,所以针对多维数组,我打从一开始(2楼)就想绕道走float score[20]……

论坛徽章:
0
116 [报告]
发表于 2012-05-13 12:48 |只看该作者
回复 113# AD8018


    考虑对齐问题,那等式还真不一定成立,比如
struct T {char a; int b;};

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
117 [报告]
发表于 2012-05-13 12:50 |只看该作者
回复 110# 幻の上帝

这段我看过,记得是C99开始增加的,C89没有。
记得尽量减少alias是增加这些条款的原因之一。

但无论char多特殊,经过sizeof(char),它的特殊性就没了,没法与sizeof(signed char), sizeof(unsigned char)的结果区分。(甚至如果sizeof(int)==1,也没法区分)。

另外,关于malloc分配的内存解释为这个又解释为哪个…… 补充一下……
malloc分配出的内存,解释为float [20],并且在整个生命期中始终当作float [20]使用;又或者解释为float [4][5],并且在整个生命期中当作float [4][5]使用;
而不是一会当作这个,一会当作另一个。这样与那些条款不冲突了吧?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
118 [报告]
发表于 2012-05-13 12:51 |只看该作者
回复 109# 幻の上帝

呃,没看明白…… 这个回复与77楼没什么关系吧?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
119 [报告]
发表于 2012-05-13 12:52 |只看该作者
回复 116# sonicling

为什么不成立了?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
120 [报告]
发表于 2012-05-13 12:57 |只看该作者
回复 114# pmerofc

只要没亲眼见到,无论可能性多大,也只是传说中的编译器
另外,重点在后半段呢…… 即使忽略一个机器字,也是为了效率,而不是为了检测出不符合C的错误。
可能可以通过命令行参数控制产生的代码提供这样的辅助检测,但必须能够去掉,否则违反C的精神了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP