C语言的自加自减到底从函数哪里开始,从哪里结束?

Python017

C语言的自加自减到底从函数哪里开始,从哪里结束?,第1张

我们一行一行分析:

for (x = 5x >0x--) //从x=5开始,当x>0的值为false时停止循环。每次循环x自减。

if (x-- <5) printf("%d", x)//x--的值就等于x,也就是说第一次是不执行的。这个语句同时也会将x自减。

else printf("%d", x++)//x++的值也等于x,但同时也会将x自增。第一次会执行这个语句,输出为x-1(等于4),因为在判断语句中x自减了。

所以,第一轮输出为4。

第二轮,x因为for循环自减了,此时x-- <5也已满足,又因为在上一轮循环中加1,因此输出4+1-1-1=2;

第三轮与第二轮相似,不同之处在于没有执行printf("%d", x++),因此x的值减2,输出1

这是一类特殊的运算符,自增运算符++和自减运算符—对变量的操作结果是增加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)

这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。