(2) printf("举洞%d", ++i)前缀,先自增,后用于表达式,故,分解为: i=i+1printf("%d", i)
(3)(4) 同理,printf("%d", i--)分解为:printf("%d", i) i=i-1
printf("%d", --i) 分解为: i=i-1printf("%d", i)
把分解后的语句组合起来,就可看出,输出为 40 42 42 40
这是一类特殊的运算符,自增运算符++和自减运算符—对变量的 *** 作结果是增加1和减少1.例如:--CouterCouter-++AmountAmount++
看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者友哪减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在丛咐变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在好郑码变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子:
num1=4num2=8a=++num1b=num2++ a=++r
+num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先白增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为白增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为9。
那么如果出现这样的情况我们怎么处理呢?c=num1+++num2
到底是
c=(num1++)+num2
还是
c=num1+(++num2)
这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)