php中i和i有什麼區別,PHP中a和a的區別

2021-05-21 10:47:17 字數 5697 閱讀 2098

1樓:匿名使用者

$i++返回的是自增之前的值,++$i返回的則是自增後的值。

如:var i = 1;

var a = i++; //a = 1; 此時i為2,但賦給a的是1

var b = ++i; //b = 3

2樓:匿名使用者

字首是直接加 字尾是輸出後才加

php中$a++和++$a的區別

3樓:學雅思

一、步驟不同

1、$a++:會先呼叫$a,之後執行自增運算。

2、++$a:先進行自增運算,之後呼叫$a。

二、主體不同

1、$a++:相當於 a = i; i++。

2、++$a:相當於 i++; a = i。

三、記憶體執行不同

1、$a++:記憶體中先將$a調入堆疊,之後指標自增1,之後將$a調出。

2、++$a:記憶體中指標先自增1之後將$a調入到指定記憶體位置。

4樓:匿名使用者

一張圖幫你搞定問題。

在理解的時候要注意,$i++所輸出的值,和這條詩句執行過後的$i本身的值是不同的。

5樓:匿名使用者

$a++ 是先使用$a的值,再將$a+1,比如$a=1, $b=$a++;;; 則$b=1,$a=2

++$a 是$a+1之後的整個值。。比如$a=1, $b=++$a;;; 則$b=2,$a=2

6樓:匿名使用者

$i++是先賦值再加,++$i是先加再賦值...就是這

php中$a++和++$a有什麼區別

7樓:匿名使用者

運算子優先順序不一樣

比如 $a = 1;$b=1;

//那麼

echo $a++; // 這句輸出a 為 1;

echo ++$b; // 這句輸出b 為 2;

當++放在前面的時候 運算子優先計算 而放後面就不優先再舉個例子

$x=1;

$y = $x++;

那麼 這個 $y 的值就是一 但是如果$x++ 寫成++$x 那麼 $y 就是2

就是說 一個是先賦值再自加1 令種是 先自加一 再賦值給$y

8樓:泉淑琴永月

一張圖幫你搞定問題。

在理解的時候要注意,$i++所輸出的值,和這條詩句執行過後的$i本身的值是不同的。

i++和++i命令有什麼區別?

9樓:蟲心菜

i++和++i命令的區別有:

1、賦值順序不同

++ i 是先加後賦值;i ++ 是先賦值後加;++i和i++都是分兩步完成的。62616964757a686964616fe59b9ee7ad9431333366303839

因為++i 是後面一步才賦值的,所以它能夠當作一個變數進行級聯賦值,++i = a =b,即 ++i 是一個左值;i++ 的後面一步是自增,不是左值。

形象的理解可以是i++先做別的事,再自己加1,++i先自己加1,再做別的事情。

2、效率不同

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,但是要注意其生存週期,以及i值在程式流中的變化。

3、 i++ 不能作為左值,而++i 可以。

左值是對應記憶體中有確定儲存地址的物件的表示式的值,而右值是所有不是左值的表示式的值。一般來說,左值是可以放到賦值符號左邊的變數。

但能否被賦值不是區分左值與右值的依據。比如,c++的const左值是不可賦值的;而作為臨時物件的右值可能允許被賦值。左值與右值的根本區別在於是否允許取地址&運算子獲得對應的記憶體地址。

比如:int i = 0;

int *p1 = &(++i);//正確

int *p2 = &(i++);//錯誤

++i = 1;//正確

i++ = 1;//錯誤

擴充套件資料

當i=5時,s=(++i)+(++i)和s=(i++)+(i++)的值:

1、當i=5時,s=(++i)+(++i)=13 先算第一個(++i),++在前面,就把i先加1再把賦值,即先把i變為6然後再得出(++i)的值為6,這時i已經變為6了,

再計算第二個(++i),++在前面也是先把i加1後再賦值,不過這時的i已經為6了,第一步的時候把i變成6了的,然後加1的話就變成7了,所以第二個(++i)的值為7,s=(++i)+(++i)=6+7=13。

2、s=(i++)+(i++)=11 先算第一個(i++),i在前面,就先賦值再把i加1,即(i++)的值為5,i的值變為6,第二個(i++),i在前面,先賦值再把i加1,這個時候的i已經為6了,即(i++)的值為6,而i已經變為7了。所以s=(i++)+(i++)=5+6=11。

10樓:匿名使用者

1、賦值

順序不同抄:

++ i 是先加後賦值;襲++i 是後面一步才bai賦值的,duzhi所以它能夠當作一個變dao量進行級聯賦值,++i = a =b,即 ++i 是一個左值;

i ++ 是先賦值後加;i++ 的後面一步是自增,不是左值。

++i和i++都是分兩步完成的。

2、效率不同:

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。

3、操作完成後,值不同:

對於n=++ i ,進行操作後,n的值發生了改變,其值變成了i+1。

對於n=i++ ,進行操作後,n的值不發生改變,其值仍然為i。

11樓:關鍵他是我孫子

i++和++i命令的區別:

1、i++是先使用i,再賦值計算

,即就是在計算程式時,先把 i 的值拿來用,然後在自回增1。

2、++i是先賦值計算,再使用,答即就是在計算程式時,是想把 i 自增1然後拿來用。

3、 ++i,在位元組碼層面,會先進行iinc,也就是執行自增,然後load變數。

4、 i++,則是,先load變數,後自增(因為已經load,所以本次自增,並不會影響已經load的變數值)。

比如:for(i=0;i<10;i++)

i先使用,用完最後在i++

for(i=0;i<10;++i)

i先自增,然後再用。

12樓:zero天秤

i++ 與 ++i 的主要區別有兩個:

一、 i++ 返回原來的值,++i 返回加1後的值。62616964757a686964616fe4b893e5b19e31333366303831

例如在java中:

public class test

}答案:「3, 2, 2」。

解析:i++改變的只有i,++i既改變i,又改變賦值變數;

二、 i++ 不能作為左值,而++i 可以。

如:左值是對應記憶體中有確定儲存地址的物件的表示式的值,而右值是所有不是左值的表示式的值。一般來說,左值是可以放到賦值符號左邊的變數。

但能否被賦值不是區分左值與右值的依據。比如,c++的const左值是不可賦值的;而作為臨時物件的右值可能允許被賦值。左值與右值的根本區別在於是否允許取地址&運算子獲得對應的記憶體地址。

比如:int i = 0;

int *p1 = &(++i);//正確

int *p2 = &(i++);//錯誤

++i = 1;//正確

i++ = 1;//錯誤

擴充套件資料

++i 和i++ 的使用,一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,因為編譯器一般都會給你做優化。但是要注意其生存週期,以及很難察覺的寫髒,就好像指標delete以後一定要賦予0一樣,我們要注意i值在程式流中的變化。

使用具體解釋:

解釋一:++i的返回值是i+1,並且i=i+1;

i++的返回值是i,並且i=i+1;

也就是如果i=1,那麼j=++i=2,j=i++=1。

解釋二:i=1;

如果y=++i;

就需要把++和i相加的數值賦給y也就是2;

如果y=i++的話;

那沒餓y的值就是1;

因為++在後面的話這種情況要先賦值所以等於1。

13樓:卡門kamen之歌

i++和++i命令bai都是duc語言中的語法,i++和++i命令i++和++i命令的區別zhi有:dao

1、賦值版順序不同

++ i 是先加後賦值;

權i ++ 是先賦值後加;++i和i++都是分兩步完成的。因為++i 是後面一步才賦值的,所以它能夠當作一個變數進行級聯賦值,++i = a =b,即 ++i 是一個左值;i++ 的後面一步是自增,不是左值。

形象的理解可以是i++先做別的事,再自己加1,++i先自己加1,再做別的事情。

2、單獨使用時一樣

獨立使用時++i 和 i++二者效果一樣,就是 i=i+1。表示式中i++取i的值參與運算,而++i取i+1的值參與運算。舉例 a = ++i,相當於 i=i+1; a = i; a = i++,相當於 a = i; i=i+1。

3、效率不同

比如i=3,b=i++就是說b=3,完成之後讓i變成4,b=++i就是先讓i++變成4,然後b=4,其中++i比i++效率要高些。一般來說在迴圈域裡面,這兩者並沒有什麼很大的區別,但是要注意其生存週期,以及i值在程式流中的變化。

14樓:匿名使用者

一直bai以來,++ --語法浪費du了太多人的時間zhi。說句實在話,++ -- 在c語言中其dao

實是一個很細回節的語法,除答了表達簡練外,真的沒有什麼其它的好處了。

由於中國的c語言教程長期以來被譚浩強主宰,而譚又錯誤的把++ --作為一個c語言重點來教,並增加了一些難點,把本來很簡單的語法,搞得複雜無比!

簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。

而 a = ++i,相當於 i=i+1; a = i;

而 a = i++,相當於 a = i; i=i+1;

如果實在搞不明白++ --怎麼回事,那也不是什麼天塌下來的事。

因為a=++i完全可以寫成 i++; a=i。

a=i++完全可以寫成 a=i; i++。

而且,這也是一種好的程式風格:++ -- 語句如非特殊需要,請單獨一行使用。

15樓:匿名使用者

第一個是先取i的值,然後再把i加一,第二個是先把i加一,再取i的值

16樓:滾去學習

1、單獨使用時

i++和++i沒有區別,都是自增1

2、進行運算時

i++是 i 先運算在加1

++i是 i 先加1再運算

17樓:難堪

i++ 返回原來的值,++i 返回加1後的值。

18樓:糖糖又笑了

i++是先把i的值拿來用,然後在自增1

++i是想把i自增1然後拿來用

比如:for(i=0;i<10;i++)

i先使用,用完最後在i++

for(i=0;i<10;++i)

i先自增,然後再用

高分php中i的作用,PHP中「」的作用

當 i的值為1 bai2 3等的時候du,的含義實際上就zhi是 voteitem1 voteitem2 voteitem3等,請看例子代dao碼 版 a1 111 a2 222 for i 1 i 2 i n 輸出 111 222這下權明白了吧。php中 的作用 不用的地方有不同的用處 1,陣列賦...

PHP中傳值與傳引用有什麼區別,php中傳值與傳引用的區別

如果bai 傳值是那麼兩個變du量是佔用不同的記憶體空zhi間,而傳dao引用則是同一個內專存空間,實際屬 就是對同一個變數進行操作。傳值,原有的值 不會消失,不會改變,兩個變數分別佔用一個記憶體,傳引用,原值會被修改,兩個變數 只佔用一個記憶體空間 按值傳遞 函式範圍內對值的任何改變在函式外部都會...

php中put和post區別,PHP中put和post區別

1.使用支援和範圍的區別 php提供了對put方法的支援,在http定義的與伺服器的互動方法中,put是把訊息本體中的訊息傳送到一個url,形式上跟post類似 php 提供對諸如 netscape composer 和 w3c amaya 等客戶端使用的 http put 方法的支援 php 4 ...