C语言自增自减运算符用法

发布时间:2024-05-15 10:25 发布:上海旅游网

问题描述:

看了一下教材,看不太懂,不知道大家有不有讲解此方面的文章,谢谢,或者举例!
什么前缀单目,后缀单目的啊,真的看不懂,看了几个书上的例子,我不知道是书错了,还是我理解有问题,真的不明白?
例如,前目单缀是先运算再使用对象,后缀单目是先使用对象再运算,如何理解?
假若有:int a=3,b=4
++a+b 的值是不是8啊,变量后a的值是4,运算:是不是(++a)+b啊
a+++4 的值是不是也是8啊,变量后a的值是多少啊,运算是不是:++(a+4)啊,真的有点不明白,希望懂的人告知,谢谢!

a+++4等价于(a++)+4 从左到右尽可能多的取运算符
先理解自增自减的含义,他的作用就是使变量加一,这个是不会受到是前缀或是后缀的影响的
(a++)+4=7 a=4
这如何理解啊,我怎么觉得这个的值应该是8怎么会是7呢?

问题解答:

C语言的前置++和后置++,称为自增运算符
前置--和后置--称为自减运算符,下面以自增运算符的区别来加以介绍,自减类似

如果单独写 自增运算符为一个语句,二者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是如果把自增运算符写入到另外表达式中二者就有很大区别了

例如
i=5;
j=i++;
执行后i为6,j为5
i=5;
j=++i;
执行后i为6,j为6

++a是先自加后操作,a++是先操作后自加,--也类同。

a+++4这种题是很容易混淆的,而且对于一些运算规则,不同的编译系统有不同的规定,不建议楼主使用。

如果是作业题的话,直接用程序运行看看结果是多少就行了。

a+++4等价于(a++)+4 从左到右尽可能多的取运算符
先理解自增自减的含义,他的作用就是使变量加一,这个是不会受到是前缀或是后缀的影响的
(a++)+4=7 a=4

int a[3];
for(i=0;i<3;) scanf("%d",a[i++]);
正确
int a[3];
for(i=0;i<3;) scanf("%d",a[++i]);
下标越界
for(i=0;i<3;) scanf("%d",a[i++]);
相当
for(i=0;i<3;){scanf("%d",a[i]);i++;}

for(i=0;i<3;i++) scanf("%d",a[i]);

for(i=0;i<3;) scanf("%d",a[++i]);
相当
for(i=0;i<3;){i++;scanf("%d",a[i]);}
所以下标越界

a+++4难道是++4优先????

热点新闻