#include <stdio.h>
int main()
{
int x = 4, y, z;
y = --x;
z = x--;
printf("%d %d %d", x, y, z);
}
输出:2 3 3
有人可以解释一下吗?
i =+ j
的含义是什么(假设i = 1
和j = 2
)?
答案 0 :(得分:9)
y = --x
表示“将x减1,然后将结果存储在y”
z = x--
表示“保存x的临时值。将x减1。将临时值存储在z”
因此:
答案 1 :(得分:6)
后缀递减运算符(x--)在递减变量之前返回变量的值。
答案 2 :(得分:3)
你必须理解后递减和预递减算子的概念。
两者都会递减你的变量,但其中一个会返回原始值(x--
),其中一个将返回递减的值(--x
)。
答案 3 :(得分:3)
简单说明:
- x或++ x :值将在。
之后修改x--或x ++ :值将在
之前修改详细说明:
- x或++ x :预递减/递增:将首先执行递减或递增的操作,然后它将分配x。
x--或x ++ : post:递减/递增:首先分配x的值然后它将执行递减或递增的操作。
让我们以更好的格式编写代码并逐步完成代码并对其进行注释,以便直观地向您展示会发生什么:
main() {
//We declare the variables x, y and z, only x is given a value of 4.
int x=4,y,z;
//--x will decrement var x by 1 first THEN it will assign the value of x to y.
//so: x = 3, y = 3 and z = nothing yet.
y = --x;
//x-- will assign the value of x to z first, then var x will be decremented by 1 after.
//so: x = 2, y=3 and z = 3
z = x--;
printf ("\n %d %d %d", x,y,z);
}
答案 4 :(得分:0)
Postfix减量(x--)与前缀减量(--x)不同。 前者返回值x,然后递减;后者递减然后返回值。
如果你认为后缀是如何在低级别编写的,你会发现它比前缀慢了......:)
答案 5 :(得分:0)
y = --x;
X递减,然后Y赋值X(3)
z = x--;
Z被赋值为X(3),X被递减(2)
答案 6 :(得分:0)
是:
x = 4
y =预减量x(基本上减1然后分配,即y = x-1 = 3
x = 3
z =后递减x(在赋值后递减1 ,即z = x = 3,然后x = x - 1
x = 2
所以x = 2,y = 3,z = 3,正是你所看到的。
答案 7 :(得分:0)
如果运算符是前缀,则在赋值之前发生增量,如果运算符是后缀,则在赋值后发生增量。
答案 8 :(得分:0)
让**
成为递增/递减运算符。 **e
表示将**
应用于e
并评估结果,而e**
表示评估e
,然后应用{{ 1}}到它。
因此,如果分离和评估是分开的,则代码如下:
**
它为您提供了您的输出;)
答案 9 :(得分:0)
以下是您的示例中(大致)发生的事情:
int x=4,y,z; // declare x=4, y=0, z=0
y = --x; // decrement x then assign it to y (pre decrement) (y=x=3)
z = x--; // assign x to z then decrement x (post decrement) (z=3 and x=2)
printf ("\n %d %d %d", x,y,z); // output 2 3 3
预增量/减量在伪代码
中看起来像这样read value
increment/decrement value
write value
assign value
和后增量/减量看起来像这样
read value
assign value
increment/decrement value
write value
答案 10 :(得分:0)
#include<stdio.h>
main ()
{
int x=4,y,z;
y = --x;
z = x--;
printf ("\n %d %d %d", x,y,z);
}
输出2,3,3 .................................第一次x = 4罚款。 y = - x,表示x的值减1并存储在y中,因此现在y = 3且x也是3.则z = x--表示x的值存储在z(z = 3)中然后x递减,即现在x = 2但z = 3。当你打印该值时,printf()打印2 3 3
答案 11 :(得分:0)
谈论i=+j;
的含义(给定i = 1和j = 2)
i=+j;
相当于i=i+j;
,因此您的表达式变为i=1+2
,即i=3