关于++ --的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 10:47:54
main()
{
int x=010,y=10;
printf("%d,%d\n",++x,y--);
}
输出的结果的 9 10
想不同 为什么呢 会是9呢
可是现在 X的值是9 啊 这是为什么啊

呵呵,这个++x是属于前缀,你在printf语句中输出的是两个表达式++x和y--的值,而++x整个表达式的值是x加1以后的值,即++x等价于x=x+1,然后表达式的值等于此时计算后的x 这样两步。
而x++等价于先计算表达式的值等于x未计算前的初值,然后x=x+1这样两步。当然--的前缀和后缀也就与++的前缀与后缀一样了。

对于这个问题很好解答,关键是他们的区别在于位置的不同,运算的先后次序也就不同,若位置在前,则在执行命令时先进行自加(自减)一次再将得到的值带入命令进行编译;若在后面则先执行命令编译,在进行运算。
例如本题中,++是在x变量前面,则当tc编译时会先让x自加一次,注意现在的x=x+1,编译时就将这个x的值传递给内存中x变量的位置,而--是在y变量后面,编译时会直接将y的值传递给内存中y变量的位置,接着进行print命令编译执行,于是就输出x的值为10,而输出y的值仍然是10,接着在执行--命令,于是y=y-1,再将这个y传给内存中的y变量的位置,于是最后内存中储存的x=10,y=9……