计算机C语言中,-i++=?,其中i的原值为3

计算机C语言中,设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1.问T中的叶子结点数为?

额,这个其实不难,你写出了这个代码,那么应该知道这个是编译通过的,对吧,的确可以的。
i前后有两个运算符,最重要的是++其实是一个运算符(效果等于i = i + 1),而且++这样的运算付的优先级非常高的,-在此是个负号运算符,优先级没有++高,要注意,这个-符号跟-1,-2这样的常量是有区别的。
那么,-i++ 相当与 -(i++)。i++和++i在编程中用的非常频繁,尤其是在循环中。
那么这两者有什么区别呢,这是这里的关键了,也就是决定结果是-3或者-4的地方。好的,以此为例。
i++相当与i = i + 1,-i就相当于-(i+1),但其实还是有区别的。i++是先执行i++所在的语句,再+1,++i是先+1,再用相加过的i值参与所在语句的执行。
看,-(i++);在这个就是一个语句,i++是先执行所在语句操作,再+1,所以:a = -(i++),结果a是-3;-(++i)是先+1,就是-4。
嗯,就是这样的,结果是-3,你可以写出来看看。至于详细的讲解,为了看清楚变量每一步的变化过程,需要有不少代码和调试,比较麻烦,这里就略过了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-16
单目运算符的结合性是从右向左,所以-i++,先++然后取负号
因为i++返回一个临时变量后自增,所以-i++的值为-3,此时i的值变为4
第2个回答  2012-03-17
int b = -i ++ ; // 先把 -i 传给 b , 然后 i 自加.
执行完后
b的值为 -3 ;
i 它自加1 , i 的值为 4 ;

如果是 b = - ++i // 先把 i 自加, 然后再把 -i 传给 b , 此时 b的值为 -4 . i 的值为 4 .
第3个回答  2012-03-16
-i++的结果是-3,但是计算完成后i的值变成4
第4个回答  2012-03-16
-3
第5个回答  2012-03-16
有这样的赋值运算符吗?