tghk.net
当前位置:首页>>关于P=(i++)+(i++)+(i++)怎么理解的资料>>

P=(i++)+(i++)+(i++)怎么理解

这是不好的用法,属于Unspecified Behavior operator+的两个参数参与运算时,对left operand和right operand的求值顺序,标准没有进行严格定义,所以最终结果取决于相关编译器实现,因而在不同环境下会出现不同的结果 至于你说的那个三个i相加后...

p=15是因为它是先取值再自加1的,所以是5+5+5=15,运算完之后i自加到8 q在不同编译器会出来不同的结果,VC6.0是22,VS2010是24。 对于VC6.0来说,它的运算顺序是:q=((++j)+(++j)) + (++j) ,也就是先算前两个++j,然后再算加法,所以就是7+7+8

如果是C的话,就这么理解 将i初始化为0,当 i 小于 p->n - 1 时运行循环中语句,最后再对i+1。 p是一个指向结构指针,结构体包含 n 这个成员数据。

p的值可以确定是15(因为是先使用i的值再把i+1三次),i和j也可以确定都是是8(因为都自增了三次),但是q的值受编译器的运算顺序影响,值不确定(因为你不能保证j的值在运算的式子里是什么时候自增了,里面没有一个顺序点)。 这样子的题目不应...

怎么会呢?它们是前缀增1符,先增1再运算,先做两次++i,i就成7了;从左至右计算,把前两个式子加起来放在一个临时变量中,比如A中,它就等于14;然后再与第三个式子相加,i又要增1成为8,可是这一次不能给A增了,所以是14+8=22。不过这与你使用...

查看优先级 注意变化后i的初值为前一括弧的值

一般的运算规则如下: ()里面的表达式先算, ++ 在变量前面则将变量加1然后取变量值, ++在变量后面则先取变量的值然后也要将变量加1 所以: p =(i++)+(i++)+(i++) = 5 + 6 + 7 = 18 q =(++j)+(++j)+(++j) = 6 + 7 + 8 = 21 i,j 分别进行了三次++...

应该是2,4吧 p=f(i++,++i) i先是2 i++之后是3, ++i是 4

这个问题展开来说会很复杂,我说个大概,你还得去研究一下C标准和相关的文章。 关键词是C的求值顺序。 表达式求值顺序不同于运算结合性和优先级,q=(++j)+(++j)+(++j);这个式子没有顺序点,而++j和q=xxx这些操作都是有副作用(side-effect)的,...

网站首页 | 网站地图
All rights reserved Powered by www.tghk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com