PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
Re: [问题] while(*s++ = *t++ );疑问
楼主:
suhorng
( )
2015-06-28 17:05:32
※ 引述《BitTorrent (螳勃唬)》之铭言:
: 请问一下
: strcpy 中
: while( *s++ = *t++);
: 可以copy char arrays
: 想请问一下可是++ 优先权 不是大于*
: 所以照理讲第一个不会被复制到阿?
推 LiloHuang: 优先权是指谁先做谁后做,但是该做的事情还是都会执行 06/28 12:58
这里其实我觉得优先权不是指谁先做谁后做,而是指一个运算式该怎么被我们解读
(后面修文补完文章内容)
楼主:
suhorng
( )
2015-06-28 17:06:00
不小心按错发文了QQ 还没写完, 可以麻烦板主帮删吗..
作者:
ssdoz2sk
(眷恋着提拉米苏的风采~)
2015-06-28 18:08:00
在文章标题上按大写E可以修改内文 标题可以用大写T
作者: LiloHuang (十年一刻)
2015-06-28 19:14:00
我意指像是 +-*/ 运算子,我们会知道先乘除后加减对于运算子的优先权解读,就是会有谁先做谁后做的顺序我猜测原po认为优先权较大的情况,可能某运算子被忽略在 flat expression 里 Precedence 用以定义执行顺序就像
https://goo.gl/2O5Wq9
开头提及的部分,不过我想应该有更加严谨的定义吧
作者:
LPH66
(-6.2598534e+18f)
2015-06-28 20:11:00
你想要的“更加严谨的定义”很多人都回了, 就是如何解读只是在没有副作用的时候它就是运算顺序而已这里因为 ++ 是有副作用的运算子所以才会有这种差别
楼主:
suhorng
( )
2015-06-28 20:14:00
今天有事没法回文了...明天再来修完 既然有推文了文章还是留着好了XD
作者: LiloHuang (十年一刻)
2015-06-28 20:34:00
postfix ++ operator 有 side effect 这我知道 XD我上一篇的推文,是假设原 po 已知 side effect 的情况提及运算子优先权,决定了编译后生成的机器码顺序毕竟运算子优先权的定义,就是决定了谁该先做谁该后做事后想想,side effect 的部分才是最初原 po 要的答案但是我的疑惑是,暂时撇开 postfix ++ 的 side effect为什么运算子优先权,suhorng 认为不是先后执行顺序
楼主:
suhorng
( )
2015-06-28 21:20:00
有三个运算子在 "优先权 => 运算先后" 的命题下会变例外&&, ||, ? :另外 sizeof 应该也可以算是一个 operator @@
作者: LiloHuang (十年一刻)
2015-06-28 21:29:00
谢谢,这样我懂你的意思了,的确用 "如何解读" 较恰当sizeof 的确也是一个 operator 没错 XD
作者:
LPH66
(-6.2598534e+18f)
2015-07-01 01:35:00
另一个语法树结构跟运算顺序是两回事的例子
#1Deo3lyi
作者: LiloHuang (十年一刻)
2015-07-01 22:04:00
我同意是因为 && 跟 || 有 short circuit evaluation我一开始的说法并没有考量到这些运算子,不够严谨了 XD但这也隐含着特定的判断顺序,机器码仍是有规则的执行
作者:
LPH66
(-6.2598534e+18f)
2015-07-01 23:49:00
Lilo 你可以去看我贴的那篇, 那篇跟 && || 都无关纯粹是这个的 side-effect 跟那个的 value computation 间谁先谁后的问题而就是这个谁先谁后的不明确导致了那种写法在不同编译器之间会得到不同的结果
作者: LiloHuang (十年一刻)
2015-07-02 00:03:00
我认同你的说法,你那篇的例子举的相当恰当,谢啦 :)某些有 side effect 情况下,顺序的确跟编译器实作相关也许我太过在意的是 codegen 后的机器码都有特定顺序
楼主:
suhorng
( )
2015-07-02 00:17:00
偷渡 Haskell 失败QQ (X
作者: LiloHuang (十年一刻)
2015-07-02 00:48:00
对 Haskell 不懂,用过 boost::phoenix 也能 lazy 求值我知道你要讲的意思啦 :)
继续阅读
[问题] map要怎么从后面搜寻回来?
ykes60513
[问题] while(*s++ = *t++ );疑问
BitTorrent
[问题] 关于在程式实作出座标图
williamsm
[问题] 关于在C#接口上绘制3D曲面图
taro3750
[问题] fread & printf 程式的虫除不太掉
lj0113
[问题] 让汇出的程式找得到dll
skitty
[问题] double 小疑惑@@?
battle7
Re: [问题] 自制DLL的struct问题
EdisonX
[问题] 移除inline func里 static 变量 warning
sb5471
[问题] 补数
mater2004
Links
booklink
Contact Us: admin [ a t ] ucptt.com