ii2和i2的區別,C語言i 2和i 2的區別

2022-06-24 02:21:45 字數 6023 閱讀 7923

1樓:小莫

i = i + 2 和 i += 2的區別主要有以下三點:

1、運算順序不相同

簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。i=i+2是先進行i+2的運算得出一個結果,再賦值給i。i+=2就是先賦值然後在進行加法。

2、得到的結果不相同

c語言中i +=2 等同於 i = i + 2 這是簡略寫法,但是計算時演算法不相同,i=i+2更容易得出i的賦值。例如:i=1,則i=i+2得到的結果是i=3,而i+=2得到的結果是i=1,運算得到的值不相同。

3、運算效率不相同

i=i+2運算效率最低,因為運算時讀取右i的地址i+1,讀取左i的地址;將右值傳給左邊的i(編譯器並不認為左右i的地址相同),而i+=2運算時讀取右i的地址,令i=1,將得到的值傳給i(因為i的地址已經讀出)。

2樓:可愛的

1、運算順序不相同

簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。i=i+2是先用i的結果,然後在進行i=i+2的式子進行處理。i+=2是先進行i=i+2,然後得出來的結果就是i。

在表示式中,i=i+2就是先進行加法,然後在進行賦值。而i+=2就是先賦值然後在進行加法。

2、得到的結果不相同

c語言中i +=2 等同於 i = i + 2 這是簡略寫法,但是計算時演算法不相同,i=i+2更容易得出i的賦值。如果i的值為1(i=1),i=i+2得到i的結果是i=3,而i+=2得到的結果是i=1,運算得到的值不相同。

3、運算效率不相同

i=i+2運算效率最低,因為運算時讀取右i的地址i+1,讀取左i的地址;將右值傳給左邊的i(編譯器並不認為左右i的地址相同),而i+=2運算時讀取右i的地址,令i=1,將得到的值傳給i(因為i的地址已經讀出)。

3樓:匿名使用者

簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。

你可以理解為多了一次定址行為。所以後者效率高

4樓:

在表示式層面,i=i+2 做的事是先加,然後將中間結果賦值,是兩步。而i+=2是一步

如果是c++ 首先看 i 是什麼型別,如果是複雜類,結構,那麼還要涉及到運算子是否過載,拷貝建構函式等等。

如果 i 是簡單型別(int , char),在使用層面,i+=2 與 i=i+2 做的事是一樣的,都是將 i 的值加了2,但生成的可執行**不一樣,且i+=2 與 i=i+2 執行的效率不同,i+=2 肯定快。

如果是c語言,同上一條。

5樓:匿名使用者

我感覺記憶體上是有差別 i=i+2 會多分配一塊記憶體用來儲存i+2的值 在將值賦值給i 而i+=2 是直接的對i 所在的記憶體進行操作..就像 i++ 和++i 的區別差不多..... 這是我認為的 勿拍磚.......

6樓:叢鑲楣

兩個是一樣的。

不過作為初學者的話,你就寫成i=i+2 吧。

很多程式設計師,特別是熟練的,寫的**也很精煉,但那並不一定都是好事。

程式**非常重要的一點是可讀性。

7樓:嘻嘻哈哈

這個我的老師和我講說這個其實意義不大,在運用的時候沒有多大區別。如果不是i=i+2而是j=i+2就有很大區別了

8樓:匿名使用者

看看彙編碼不就知道了,i+=2和i=i+2編譯後的彙編碼是一模一樣的

int i=0;

0094139e mov dword ptr [i],0

i+=2;

009413a5 mov eax,dword ptr [i]

009413a8 add eax,2

009413ab mov dword ptr [i],eax

i=i+2;

009413ae mov eax,dword ptr [i]

009413b1 add eax,2

009413b4 mov dword ptr [i],eax

9樓:蒼狼涯

沒區別,兩個表示式是一樣的,i+=2,其實就是i=i+2

10樓:匿名使用者

不錯,效果一樣,沒區別

11樓:遺忘的游龍

笑死我了,他那些說什麼結果不同的回答題主好像都信了,這兩個輸出結果是一樣的吧,然後說著話的都被題主罵了

12樓:匿名使用者

你你你你你你 你 你 你 你 你 你

13樓:

像這種態度惡劣的人,大家還回答它的問題,真是太寬容了.

14樓:來自章華寺才高八斗的華雄

一樣的操作含義

只不過後者看起來更專業點,書寫起來顯得更簡便

c語言i+=2和i=+2的區別

15樓:可愛的

1、運算順序不相同

簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。i=i+2是先用i的結果,然後在進行i=i+2的式子進行處理。i+=2是先進行i=i+2,然後得出來的結果就是i。

在表示式中,i=i+2就是先進行加法,然後在進行賦值。而i+=2就是先賦值然後在進行加法。

2、得到的結果不相同

c語言中i +=2 等同於 i = i + 2 這是簡略寫法,但是計算時演算法不相同,i=i+2更容易得出i的賦值。如果i的值為1(i=1),i=i+2得到i的結果是i=3,而i+=2得到的結果是i=1,運算得到的值不相同。

3、運算效率不相同

i=i+2運算效率最低,因為運算時讀取右i的地址i+1,讀取左i的地址;將右值傳給左邊的i(編譯器並不認為左右i的地址相同),而i+=2運算時讀取右i的地址,令i=1,將得到的值傳給i(因為i的地址已經讀出)。

16樓:天雲小店

i+=2;  等價於i = i + 2;   // 將i的值加2後再賦值給變數i

i=+2;  等價於i = 2;        // 將2賦值給變數i

下面通過具體的例項來說明兩者的區別:

int i=3;

i+=2;

printf("%d", i);  // 輸出5,因為i+=2等價於i=i+2=3+2=5

int i=3;

i=+2;

printf("%d", i);  // 輸出2,i=+2相當於是將+2賦值給變數i,而正數的+號可以不寫,所以輸出2

17樓:匿名使用者

我感覺記憶體上是有差別 i=i+2 會多分配一塊記憶體用來儲存i+2的值 在將值賦值給i 而i+=2 是直接的對i 所在的記憶體進行操作..就像 i++ 和++i 的區別差不多..... 這是我認為的 勿拍磚.......

18樓:金色潛鳥

看你用在何處。

printf("\2" ); \2 是8進位制編碼002,代表不可見字元 stx -- start of text.

對比 printf("\7"); printf("\007"); \7 是8進位制編碼007,代表 響鈴。

printf("\7"); 你能聽到計算機叫了一聲。

x=2; 2 是整型常數,十進位制 數值 2

'\2' 字元常量,一位元組長度,數值 等於 8進位制編碼002 代表的ascii字元 的值,數值 2

printf("%d",'\2'); 輸出 2

'2' 字元常量,一位元組長度,數值 等於 ascii字元 2 的值, 數值 十進位制 50

printf("%d",'2'); 輸出 50

19樓:匿名使用者

簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。

你可以理解為多了一次定址行為。所以後者效率高

20樓:匿名使用者

i+=2即:i=i+2;

i=+2;這個不會報錯嗎?我沒試過,如果不會報錯的話我的理解就是i=2;一樣的,+表示正數

21樓:分享小美

#include

void main()

通過上面的程式可以完全說明你的問題哦;

i=+2;是一個賦值語句,把+2賦給i;

i+=2;是把i+2賦給i;

而i++是i自加;

++i也是自加,兩者的區別是在迴圈語句中,i++先用一次在加,而++i是先加一次在用

22樓:匿名使用者

i+=2相當於i=i+2;

i=+2就是i=2;(+)為正號

23樓:

i+=2 means i=i+2;

however,i=+2 means i=2, that is to say +2 equals 2.

所以呢,你該明白了吧。不懂可以追問啊~~~

24樓:帥得有點壞

i+=2就是i=i+2;

i=+2就是i=正2.就是2.

25樓:夢之神域

i+=2等效i=i+2

i=+2沒這種表示

c語言中i=i+2與i+=2有何區別?使用過程中會出什麼錯誤?

26樓:通靜姝類谷

你好,i+=2

是i=i+2的簡寫形式而已,

不存在區別。

希望可以幫到你!

27樓:謝南珍劉煥

這兩個的功能

是一樣的。

使用過程中我認為要注意兩個方面,第一個:

+=是一個運算子,加號和等號中間不能有空格,輸錯了編譯時會報錯的。

第二個:注意運算子優先順序,比如這個i+=

i*2;等價於i=

i+(i*2);

28樓:墨琅莘旎

語法錯誤:

在編譯的時候會提示你。比如說:for(i=0,i<10,i++)在編譯的時候會提示你錯誤,要把逗號改成分號。

邏輯錯誤:沒有錯誤提示,能執行,但是達不到自己想要的結果。

c語言中i=i+2與i+=2有何區別?使用過程中會出什麼錯誤?

29樓:匿名使用者

這兩個的功能 是一樣的。

使用過程中我認為要注意兩個方面,第一個: += 是一個運算子,加號和等號中間不能有空格,輸錯了編譯時會報錯的。 第二個:

注意運算子優先順序,比如這個 i += i * 2; 等價於 i = i + (i*2);

30樓:一代天驕唐呵呵

你好,i+=2 是i=i+2的簡寫形式而已,

不存在區別。

希望可以幫到你!

31樓:小白考研

i += 2和i = i + 2是等價的!

類似的還有 i -= 2 <=> i = i - 2;

i *= 2 <=> i = i * 2;

i /= 2 <=> i = i / 2;

c語言初學者~~ 例如i=2和i==2區別何在呢???

32樓:匿名使用者

i=2是在賦值 也就是2做為一個值給i這個變數

i==2是i等於2的意思

在c中=是賦值運算子 ==才是關係運算子的等關係

33樓:匿名使用者

i=2的意思是將2的值賦予i,也就是說現在i的值是2;

而i==2是看他們相等嗎,也就是說i的值不知道,看他是2嗎,如果是這個語句就為真,如果不是,這個語句就為假!

34樓:笑年

i=2 是賦值語句,

i==2是i的值與2相比較的語句

35樓:匿名使用者

i=2是把2賦值給i,i==2是表示式,返回值是真或假

酷睿i2好還是i3,i5好是i後面的數值越大越好嗎

酷睿還有i2?bai?那叫酷睿du雙核 i3 第一代 zhi i3 第二代 i3 第三代dao 雙核雙執行緒版i5 第一權代 i5 第二代 i5 第三代 四核四執行緒i7 第一代 i7 第二代 i7 第三代 四核八執行緒現在已經在發展 了 一般來說 第三代是第二代改進型號 第二代又是第一代改進型號 ...

I2溶液檢驗澱粉是否水解完全為什麼用KI

ki i2是把i2溶解在ki的溶液中。當有澱粉時,這個溶液就變藍。但是完全回水解後就不會變藍。因此可以用它答來檢驗澱粉是否水解完全。因為澱粉和i2能夠有顯色反應,要是澱粉完全水解,那個與i2的顯色反應就不存在了。配製i2溶液時為什麼要加 ki 因為i2不容於水,但是加入i 後,i2可以和i 生成三碘...

2023年i2月3日寅時生人五行缺什麼

公曆 1965年 12月 3日 4點 農曆 乙巳年 十一月 十一日 寅時 八字 乙巳 丁亥 辛卯 庚寅 五行 木火 火水 金木 金木 納音 佛燈火 屋上土 松柏木 松柏木 八字五行個數 2個金,3個木,1個水,2個火,0個土。五行木旺。五行是否所缺 五行缺土 1965年出生五行是什麼 65乙巳年生人...