搜索
查看: 863|回复: 3
打印 上一主题 下一主题

i*=i+++j*k+k^2%i++ 怎么分解啊

[复制链接]
跳转到指定楼层
楼主
发表于 2013-12-19 15:45:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币

i*=i+++j*k+k^2%i++                                 

j=i^k/j+++i/4

这两个怎么分解啊


沙发
发表于 2013-12-20 14:18:37 | 只看该作者
i=i*{(i++)+(j*k)+[k^2%(i++)]}  

j=(i^k)/(j++)+(i/4)
这样都看不懂,咱也没办法
板凳
发表于 2013-12-20 15:42:22 | 只看该作者
本帖最后由 rosynirvana 于 2013-12-20 15:48 编辑

第一个是未定义,在两个紧邻时点之间,一个变量i的值被改变了三次,优先级是
  1. i (*= (i++) + (j*k) + k^(2%i++))
复制代码

原因看下面

第二个同样是没有定义的,因为在两个紧邻的时点间, j的值被改变了2次如果要说优先级
  1. j=i ^ (k/(j++)) + i/4
复制代码

首先是中间的+++,编译器扫描一次会进行最大匹配, 所以会被parse为++  +,而不是+  ++
然后一元优先于二元,所以++优先于其他,然后四则优先于位运算
所以结果如上

ls那位想当然了,估计把^当成指数运算了

地板
发表于 2013-12-22 21:24:58 | 只看该作者
rosynirvana 发表于 2013-12-20 15:42
第一个是未定义,在两个紧邻时点之间,一个变量i的值被改变了三次,优先级是
原因看下面

好吧,咱是当成指数运算了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表