免费注册 查看新帖 |

Chinaunix

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

[C] 关于UB的问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2013-01-15 13:00 |只看该作者
知道C程序能做什么是一个层次
知道C程序不能做什么是另一个层次

论坛徽章:
0
32 [报告]
发表于 2013-01-15 15:25 |只看该作者
LZ是到现在还不知道指的是什么?还是说只是不知道干什么用?
不管怎么说,翻定义不就结了。
http://tieba.baidu.com/p/1841377 ... p;cid=0#23925074800
要说使用,倒可以补充几句。这类术语限定conformance,主要是给标准制定者用的(也能方便让实现厂商拿来写spec)。
UB了,意味着用户后果自负,规则无效,别指望有任何可预测的行为。跟no warranty有点像。
对于标准来说,因为实际上定义的是有可移植性的语言,所以把nonportable也带上去了。实际上这个nonportable不是重点,重点是你有了UB,就算具体实现有进一步保证,标准也懒得管(一一照顾这么多实现太麻烦了)。比如你用了不遵守ISO C++的扩展的C++程序,可以是VC++程序,可以是G++程序,但不是ISO C++程序。如果你不说清楚限定了什么环境,一般认为ISO C++==C++,于是你这程序就杯具了。C同理。
当然更杯具的是写了在具体实现下通常都没保证的程序,比如把空指针*了,多线程下的数据竞争之类——不管是不是考虑标准都应该当作“UB”来防——不过这反而不太容易搞错,所以一般也不太强调。

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
33 [报告]
发表于 2013-01-15 16:20 |只看该作者
回复 32# 幻の上帝


    大概理解一下,UB就是C标准中没有确定的东西,需要编译软件和用户确定的东西,对于使用来说,如果要保证跨平台,那么就需要完整的考虑各种情况,让行为确定,就像线程的联合一样,保证程序的确定性

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
34 [报告]
发表于 2013-01-15 19:03 |只看该作者
回复 31# KBTiller


   
知道C程序不能做什么是另一个层次


看来我永远也达不到这个层次

论坛徽章:
0
35 [报告]
发表于 2013-01-21 10:57 |只看该作者
写程序,第一要考虑的是代码执行效率,第二要点是可读性,
第三才是装逼性。别整反了。

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

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
37 [报告]
发表于 2013-01-21 13:09 |只看该作者
本帖最后由 __BlueGuy__ 于 2013-01-21 13:28 编辑
pmerofc 发表于 2013-01-21 11:45
第一是正确性
第二是可读性
“第一要考虑的是代码执行效率”不但荒唐而且落伍

都不对,

第一考虑的是问题是否合理、明确, 不合理,不明确的问题,打回去重写
第二考虑的是自己是否有能力解决问题,没有,打回去重写
第三考虑的是解决问题需要多长时间,太长了,打回去重写

程序的正确性是最不值得考虑的,程序员连正确性都不能保证,还写个JB程序

什么设计啊、效率啊、可读性啊都是些无关紧要的边角问题

论坛徽章:
0
38 [报告]
发表于 2013-01-21 13:29 |只看该作者
效率永远是第一位的。

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
39 [报告]
发表于 2013-01-21 13:30 |只看该作者
本帖最后由 __BlueGuy__ 于 2013-01-21 13:33 编辑
leslielg 发表于 2013-01-21 13:29
效率永远是第一位的。


太菜了,回炉再造吧

你觉得你哪段代码写的比较有效率,让你这么有自信说效率永远是第一位的 ?

肯定没有,就凭你的智商还写不出来高效率的代码

论坛徽章:
0
40 [报告]
发表于 2013-01-21 13:33 |只看该作者
回复 39# __BlueGuy__


    你又是哪里来的自信可以这么随意的断言别人的观点?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP