#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
)?
#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
)?
简单的解释:
--x或++ X:值会被后修饰。
x--或x ++:值会之前被修改
详细说明:
--x或++ X:预递减-/增量:将第一先执行递减或递增操作,然后分配x。
x--或x ++:交:递减/增量:将第一指定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);
}
后缀递减运算符(x--)在递减之前返回该变量的值。
您必须了解后递减和预递减算子的概念。
两者都会减少您的变量,但其中一个将返回原始值(x--
),其中一个将返回递减值(--x
)。
后缀递减(x--)与前缀递减( - x)不同。 前者返回值x,然后递减;后者递减并返回值。
如果你一个后缀是如何在低级别写的东西,你会发现这是一个比liiiitle前缀慢... :)
y = --x
手段“减少由一个X,然后存储结果在Y”
z = x--
指 “保存x的温度由一个减少X沿z存储临时值”
因此:。
y = --x;
X递减,则Y被分配有X的值(3)
z = x--;
ž被分配有X(3)的值,将X递减(2)
是:
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,你看到了什么。
如果运营商是一个前缀分配之前的增量情况发生,如果运营商是一个后缀分配后的增量情况
let **
是增量/减量运算符**e
意味着适用于**
和e
评估结果而e**
意味着评估e
,然后应用**
它。
人体工程学,如果递减和评价分隔,代码读作:
int x=4,y,z;
x-=1;//3
y = x;//3
z = x;//3
x-=1;//2
,让你你有输出中)
这是发生(大概)在你的榜样是什么:
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
#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。当UR打印值,则printf()的打印2 3 3
谈论i=+j;
装置(给定I = 1和j = 2)
i=+j;
相当于i=i+j;
所以你的表达式变为i=1+2
即i=3
这是功课吗? – 2010-10-08 13:56:15
应该是'int main()',并且printf中的''n''应该在末尾 – pmg 2010-10-08 14:00:02
嗨,ive可以直观地向您显示您的代码发生了什么。所以你可以通过简单的方法一步一步地了解它,通过你的代码让你知道发生了什么。所以你可以通过引用你的代码来解释它。检查出来 – Pavan 2010-10-08 14:16:07