VC上是怎样计算这个的?
main(){inti=8;printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);}这个程序在TC上运行结果是8778,我能理解在VC上运...
main() { int i=8; printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--); } 这个程序在TC上运行结果是8778,我能理解 在VC上运行结果是8788,我不明白他是怎么算出来的,请问时候有人能告诉我他的计算过程?谢谢!!!
展开
1个回答
展开全部
首先vc中的函数都是自左向右运行的,所以我们也应该自左向右来看;
其次vc和tc的一个区别就反映在这道题的结果上。
vc是以语句为单位的而不是tc中的以表达式为单位,
所以这道题的计算过程为:
系统先看到的是一个++i,一个--i,进入printf();中是i=8,
所以最左边的应该是8,
这你是知道的,
之后并没有像在tc中一样i值自减一,而是继续向左,打印i的值,自增语句也没运行,继续向左,这回要做--i的自减,之后++i的自加。
运行完了之后就该做上面遗漏下来的i++,i--的运算了。
这个可以用在printf();后面加pirntf("%d",i);结果为8中得到验证(因为总体上看i加了两次又减了两次,最终结果不变)。
计算这类题在vc中应该以整个语句为对象,而不像tc中以表达式为研究对象!!切记!!
其次vc和tc的一个区别就反映在这道题的结果上。
vc是以语句为单位的而不是tc中的以表达式为单位,
所以这道题的计算过程为:
系统先看到的是一个++i,一个--i,进入printf();中是i=8,
所以最左边的应该是8,
这你是知道的,
之后并没有像在tc中一样i值自减一,而是继续向左,打印i的值,自增语句也没运行,继续向左,这回要做--i的自减,之后++i的自加。
运行完了之后就该做上面遗漏下来的i++,i--的运算了。
这个可以用在printf();后面加pirntf("%d",i);结果为8中得到验证(因为总体上看i加了两次又减了两次,最终结果不变)。
计算这类题在vc中应该以整个语句为对象,而不像tc中以表达式为研究对象!!切记!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询