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

p=5+6+8 第一个(i++)中是这样理解 先调用i后i再自增1 所以第一次调用完后 i=6 第二个(i++)调用的时候 i=6 调用完 i=7 (++i)是i先自增然后在调用 所以调用的时候i为8; 所以答案 你就知道了

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

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

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

建议在f函数中 加入 printf("%d,%d\n",a,b) ; 观测 传入的值。。。 p=f(i,++i); 你老师应该说过 先++,再执行 所以他等于 i++之后再调用的函数f被传入的i 都是3.。所以相等,所以为0. 扩展的讲一下。。p=f(i,i++); 如果是这样的话,为什么是1呢...

i++是先执行整个表达式的值,再加1;++i是先加1后再执行整个表达式的。所以K的值为9,i的值为6。如果i=3,则k=(++i)+(++i)+(++i)执行过后k的值为 18 ,i的值为6

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

int (*p)[4];定义了p的类型为指向长度为4的int型数组的指针(是指向数组首地址的指针,相当于二维指针)。 如果说a为定义一个3行4列的矩阵,那么p就是指向每一个行向量(长度为4)的指针。 *(*(p+i)+j)是对p指针的二重内容读取,即,先取出(p+i)第i...

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