当前位置:首页 » 编程语言 » c语言中自减符号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中自减符号

发布时间: 2023-01-28 21:15:50

‘壹’ 谁能详细的讲一下c语言中的自加自减运算符:++、--

a=1,b=a++ b的值为1,a的值为2
a=1,b=++a b的值为2,a的值为2
a=1,b=a-- b的值为1,a的值为0
a=1,b=--a b的值为0,a的值为0

‘贰’ c语言的自加/自减运算符如何书写起什么作用有什么特点

i++ i--就是自增自减运算!效果相当于i=i+1和i=i-1.之所以这样儿写只是为了简化代码,为程序员提供方便!

‘叁’ 关于C语言中自增自减运算符

#include "stdio.h"
main(){
int i=5,j=5,p,q,k,m;
p=(i++)+(i++)+(i++);
k=(++j)+(++j);
m=(++j);
q=k+m;
printf("%d,%d,%d,%d,%d,%d",p,q,i,j,k,m);
}
15,22,8,8,14,8

结果:15,22,8,8,14,8 执行结果是这样的:
1、q表达式读取第一个(++j) 压入栈中(++j=6),j=6;
2、再读取+,再读取第二个(++j)压入栈中(++j=7),j=7;
3、再读取+,这时发现算符优先级是平级的,故取出他们做加法,他们都读取同一个j值(相同的名字指向同一地址),此时j=7,所以成了q=7+7+(++j);
4、在读(++j)压入栈中,(此时++j=8) ,j=8所以是q=7+7+8=22..

5、如果改成:q=(++j)+(++j)*(++j);后面的加号改为乘法。肯定是
q=8+8*8;优先级不同了,自己思考啊·······························
代码:
#include "stdio.h"
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)*(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
结果:15,72,8,8

‘肆’ C语言中自加自减是什么运算符

自增++
自减--
对于内置类型来说是算术运算符,返回整型结果
但是对于重载过的就要不一定了。

‘伍’ C语言里--表示自减,这个自减什么意思是不是把“--”前面的变量减1再赋给这个变量

先直接回答你的问题, 你说的基本上对,或者说你想表达的那个意思是对的,只是你描述的情况不够全面.没有涵括该运算符相关的其他方面.


--a; 等价于 a = a - 1;

a--; 等价于 a = a - 1;

在单纯的一元运算符表达式中,两者的效果是一样的.就是你说的这样.


inta=5;
//此时两者的效果一样
--a;//a=a-1;
a--;//a=a-1;


复杂一点的情况是,一个表达式中多于一个操作数和操作符.

这时, 你需要了解下运算符的优先级和结合律的概念.


运算符的作用跟我上面说的是一样的,只是你分析一个表达式的时候,需要注意下

‘陆’ 关于c语言打印顺序和自增自减符号的问题

这里只解释第一个printf语句,其他与此相同
其中的输出项为:++i,--i,i++,i--,-i++,-i--
一般来说,printf函数中的输出项表达式是从右向左开始计算的,但输出顺序与排列顺序相同。因此,结果逆序看:-i--,后自减,先输出-8,i=7;-i++,输出-7,i自增为8;i--,i++与前两项相同;++i,--i,先自减i为7,输出7,再自增i=8,输出8

‘柒’ C语言的自加自减运算符

这两个都是未定义行为,因为(y++)+(y++)+(y++)里面没有顺序点,所以你无法保证执行完第一个y++之后,y的值是否增加了,如果增加了,那么第二个y++就会是6。
只有顺序点才能确定一个副作用被实现,在这里,副作用就是确保y++之后,y加1。
下面的那个++y亦是同理。

至于什么是顺序点,可以参考这个:
C/C++语言定义(语言的参考手册)明确定义了顺序点的概念。顺序点位于:
1. 每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句,return语句的表达式,以及条件、循环和switch语句的控制表达式(for头部有三个控制表达式);
2. 运算符 &&、||、?: 和逗号运算符的第一个运算对象计算之后;
3. 函数调用中对所有实际参数和函数名表达式(需要调用的函数也可能通过表达式描述)的求值完成之后(进入函数体之前)。

‘捌’ 在C语言中自增自减运算符有什么作用

这是一类特殊的运算符,自增运算符++和自减运算符—对变量的操作结果是增加1和减少1.例如:
--Couter; Couter-; ++Amount; Amount++;
看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子:
num1=4; num2=8; a=++num1; b=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);
这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。

‘玖’ C语言自增自减运算符用法

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

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

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