i = 8;printf("%d\n", -i++); printf("%d\n", -i--); 结果为:-8 -9 请问 -i++ 和 -i-- 分别等价于什么?
如 i++等价于 i=i+1 i先运算再自增。 -i++是什么? -i=1-(i+1) ? -i--是什么?-i=1-(i-1) 求解!
第1个回答 2012-03-26
-号就是负号,等于取负
-i++,-i-- 自增、自减与负号都是右结合运算符,同级(在C语言里没有前置后置之分,C++里有区分)。这里负号右侧有i,因此会输出-8,自增或自减后面没有值,所以不会被输出,但执行后i值会有相应变化,需要注意的是,这里打印-i并不会对i取负值,若执行i=-i则会。
printf("%d\n",-i++) //此时i为8,输出为-8,此句执行后,i为9
printf("%d\n",-i--) //此时i为9,输出为-9,此句执行后,i为8
第2个回答 2012-03-26
不太赞同一楼的回答
单目运算符的结合性是从右向左的,所以
-i++ => -(i++) i先返回一个临时的值然后自增,这时-作用于这个临时的值 为-8,此时i为9
同样
-i-- => -(i--) i先返回一个临时的值然后自减,这时-作用于这个临时的值 为-9,此时i为8
第3个回答 2012-03-26
printf("%d\n", -i++);
先打印出-8,然后i自加,之后等于9
printf("%d\n", -i--);
这个先打印出-9,然后i自减等于8
追问噢 我明白了 是i++前先打印出来了 !谢谢你了 我选一楼为满意回答了。再次谢谢
第4个回答 2012-03-26
涉及运算符优先级
可加Q群:122949029或27896931
追问能给我说一下为什么 -i++ 是-8 -i--是 -9
吗? 谢谢
追答-i++ => (-i)++ 先-i处理完后(i=8)再++
前边++了,所以i=9
-i-- => (-i)-- 先-i处理完后(i=9)再--
这时i=8
追问噢 我明白了 是i++前先打印出来了 !谢谢你了
本回答被提问者采纳
Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答