#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