啊哈磊_编程从这里起步

标题: i*=i+++j*k+k^2%i++ 怎么分解啊 [打印本页]

作者: 510384954    时间: 2013-12-19 15:45
标题: i*=i+++j*k+k^2%i++ 怎么分解啊

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

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

这两个怎么分解啊



作者: 河蟹    时间: 2013-12-20 14:18
i=i*{(i++)+(j*k)+[k^2%(i++)]}  

j=(i^k)/(j++)+(i/4)
这样都看不懂,咱也没办法
作者: rosynirvana    时间: 2013-12-20 15:42
本帖最后由 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
rosynirvana 发表于 2013-12-20 15:42
第一个是未定义,在两个紧邻时点之间,一个变量i的值被改变了三次,优先级是
原因看下面

好吧,咱是当成指数运算了




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2