关于c语言的自增自减的单输出和多输出的区别

先写一个单输出的样式,分析他们的输出方式和顺序。

#include<stdio.h>
#include<stdlib.h>
void main()                               
{                                           
 int a=8;
 printf ("%d\t",++a);
 printf ("%d\t",--a);
 printf ("%d\t",a++);
 printf ("%d\t",a--);
 printf ("%d\t",-a++);
 printf ("%d\t",-a--);
 system("pause");
}

这是一个最简单的c语言的自增和自减的单输出的代码!输出结果可以看出单输出是重上往下的顺序,
而且与赋值语句的顺序顺序和方法是一至的。
那让我们看看多输出语句的C语言的自增自减是否也是一样呢。

void main ()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
system("pause");                 
}

这是一个多输出的语句,我们先想想他的结果是什么。
多输出的结果
是不是感觉和自己的想象多少有一些出入?
我们先来看看第一个数按照往常的思维是不是第一个数就错了,
那我们换个角度想一想。是不是多输出是从右往左的呢?
思考一下发现从右往左是对的,但是倒数第2个数却怎么也想不出是为什么对吧。
那我们就来分析一下,
首先从右往左按照C语言的自增自减赋值和运算的规律都没有错直到左数第2个数,为什么不是7呢?那我就来说明一下,
当自加自减后,得到了一个与定义的变量加减1的数,我们把这个数放在一个暂时的存储单位,而定义的那个变量的值所站的位置的值是不变的,那就是说明这个变量有两个值,一个是加减完了的暂定的值,还有一个是初始是值。
我们清楚这个道理后就可以开始理解了,当自加自减在右边时(右标识符),我们取暂定的值赋给输出量。而当自加自减在左边时(左标识符),我们拿最开始定义的那个值给输出量,而且不用在进行运算。
想一下,是不是结果就出来了呢?
注意标识符的位置。还有一点大家在想的时候非常容易出错,就是千万不要把数值的“正负符号”带给那个变量。

猜你喜欢

转载自blog.csdn.net/qq_43604084/article/details/83793031
今日推荐