免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17492 | 回复: 83
打印 上一主题 下一主题

C语言标准有没有规定前一个语句必须在后一个语句之前完成? [复制链接]

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-17 16:04 |只看该作者 |倒序浏览
真的是越来越不会写程序了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
2 [报告]
发表于 2011-10-17 16:08 |只看该作者
完整的规则记不清楚,但语句之间肯定是有序列点的。

能给出问题代码么?

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
3 [报告]
发表于 2011-10-17 16:12 |只看该作者
本帖最后由 smalloc 于 2011-10-17 16:16 编辑

回复 2# OwnWaterloo


    http://bbs.chinaunix.net/thread-3607285-1-1.html
老实说我在C程序设计语言和C语言参考手册上没见到提到这一点。难道我们一直在被潜规则?

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
4 [报告]
发表于 2011-10-17 16:16 |只看该作者
C语言的规定只能是影响到编译器吧,CPU要怎么干怕是不会管你C语言的规定的!

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
5 [报告]
发表于 2011-10-17 16:24 |只看该作者
本帖最后由 OwnWaterloo 于 2011-10-17 16:26 编辑

回复 3# smalloc

噢,又是这帖……

C标准描述的是单线程的……

序列点定义的副作用的顺序,应该是指可被观察到的顺序
更精确的描述要靠幻の上帝、kbtiller、pmerofc了……

>> 线程A
>> ptr->buffrt = malloc(xxx);
>> ptr->enable = true;
对此线程来说,buffer与enable执行先后是不可观察的。
即使enable确实在此之前,将它说成在此之后也是说得通的。
在C层面,以及此线程中,无法证明enable在buffer之前

当另一个线程插一脚,它们之间的执行顺序才是可被观察的。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
6 [报告]
发表于 2011-10-17 16:46 |只看该作者
回复  smalloc

噢,又是这帖……

C标准描述的是单线程的……

序列点定义的副作用的顺序,应该是指 ...
OwnWaterloo 发表于 2011-10-17 16:24


我确实很期待语言至上论者, 号称 C标准规定机器 的某人能不能从里面找到某条款来说明。。。。。。或者又是包打一切的 ”未定义行为“

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
7 [报告]
发表于 2011-10-17 16:52 |只看该作者
抛开多线程,好像就; , ?: 几种是有顺序的吧

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
8 [报告]
发表于 2011-10-17 16:58 |只看该作者
回复 6# zylthinking

序列点、副作用以及它们与优化之间的关系可能C标准里找得到 —— 这是想请教他们的地方。
哦,还有davelv,他最近太不活跃了……


但多线程下序列点与副作用肯定是没有相关规定的。
可能那时候多线程、多核、乱序不流行?
也可能是制定标准时把多线程想简单了,以为靠库就可以完全解决。

不过C/C++标准也是在做相应的发展嘛……
据说C++11有更详细的规定。
C1X也在制定中……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
9 [报告]
发表于 2011-10-17 17:00 |只看该作者
论坛有@功能就好了……

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
10 [报告]
发表于 2011-10-17 17:03 |只看该作者
论坛有@功能就好了……
OwnWaterloo 发表于 2011-10-17 17:00



    weibo有....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP