C_and_CPP 板


LINE

a[x++] = --x符合E1=E2形式,先处理--x的计算与副作用 --x为前置运算,先处理副作用,x减1,这里可以得到a[x++] = 1 再来处理a[x++]的计算与副作用 x++为後置运算,先进行计算,得到a[1],接着x加1 即a[1] = 1,x为2 对17的新规则还不熟,有误请更正 不过老师考这个是害人,即便在17已经合法 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.248.34
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1488979714.A.705.html
1F:推 Hazukashiine: 下次老师就会加注:「请用C++17规则作答」03/08 21:30
2F:推 sinker5566: 感谢大大03/08 21:34
3F:→ loveflames: 过度重视求值顺序跟运算子优先顺序,我觉得害处很大03/08 22:10
4F:→ loveflames: 别人看到这种code还得去查表03/08 22:10
5F:推 descent: 为什麽 c++17 要定这个标准?03/08 22:36
6F:→ Caesar08: 因为有人发现,unspecified behavior会变成03/08 22:49
7F:→ Caesar08: undefined behavior03/08 22:49
8F:→ Caesar08: 读p0145r3就可以知道原因了03/08 22:50
9F:→ james732: 没有明确的定义,有带来任何好处吗?03/08 23:29
10F:推 wtchen: 感谢,已补充进13诫(觉得C++愈来愈龟毛)03/08 23:44
11F:→ final01: 为啥到c++17才规定...03/08 23:50
12F:→ uranusjr: 有规范是好事啦, 除非要让它 syntax error 不然就是个雷03/09 00:03
13F:→ uranusjr: 有规则的雷总比没规则的雷要好03/09 00:03
14F:→ loveflames: 不要过度使用就是03/09 00:08
15F:→ MOONRAKER: 不明确定义,方便compiler自由发挥。03/09 05:02
补充一个比较复杂的例子 //A为函数指标阵列,f为物件的方法 i=0; ++i = A[i++](i++,++i).f(i++); 规则 E1 = E2: E2->E1 E1 = E2: E1与E2的计算->E1的赋值 E1(E2,E3): E1->E2->E3 推导过程 a[0](i++,++i).f(i++),i=1 a[0](1,++i).f(i++),i=2 a[0](1,3).f(i++),i=3 a[0](1,3).f(3),i=4 ++i为前置运算,副作用早於计算, i=5 结果为i = a[0](1,3).f(3) ※ 编辑: loveflames (60.248.56.181), 03/09/2017 13:23:34
16F:推 pili100: 这样写code有比较清楚吗?定义这个感觉吃饱太闲03/09 17:44
17F:→ loveflames: 定义是需要啦,不要滥用就好03/09 17:52
18F:推 wtchen: C++17真的闲到去定义这个?03/09 18:14
19F:→ loveflames: 我这篇写的都有定义03/09 18:27
20F:推 AstralBrain: E1(E2,E3)这里的E2,E3应该没规定顺序?03/09 19:02
我得更正前面的结论 看到置底十三诫的f(++i,++i),没查来源就直接套了 查规格书查半天都找不到 後来才知道在17虽然已不是undefined behavior 但仍是unspecified behavior 为避免混乱,这两行不要理它
21F:→ loveflames: 17有规定函数参数的求值顺序03/09 19:22
22F:→ loveflames: E1.E2应该要算成上面的那个,所以拿掉03/09 20:14
23F:推 wtchen: 我写的时候是参照这里 03/09 23:10
25F:推 wtchen: 已经把f(++i,++i)拿掉,感谢指正(真是乱到我都搞不懂) 03/09 23:12
26F:→ loveflames: 除了这个例子没找到,其他我在规格书都有翻到 03/09 23:28
27F:→ loveflames: 大多写在5.2节,而list-initIialization写在其他地方 03/09 23:29
28F:→ loveflames: f(i = -1, i = -1)不是从左到右,它合法的原因是 03/09 23:33
29F:→ loveflames: 进入function前每个argument的副作用会处理完毕 03/09 23:40
30F:推 wtchen: 不懂,那f(i=-1, i=1)的话,i会是-1还是1? 03/09 23:48
31F:→ loveflames: unspecified behavior 03/10 00:15
32F:→ loveflames: 左右方向随编译器定的 03/10 00:18
想到一个好例子,这个有查过规格书可以挂保证 T x(E1,E2); //unspecified T x{E1,E2}; //E1 -> E2 ※ 编辑: loveflames (36.237.103.169), 03/10/2017 10:15:38







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP