c語言中a i與a i的區別

時間 2023-01-17 05:05:03

1樓:匿名使用者

+=是一個運算表示式,它和這個是等價的a=a+i

a=+a就是a=a嘍。

2樓:匿名使用者

平時沒什麼區別。

再輸出的時候,一個輸出的是a的值。一個輸出的是(a+i)的值。

a=i++與a=++i的區別是什麼

3樓:八哥說科技

一、運算型別不同:

「a=i++」是對變數i進行了後置自增運算後在進行賦值。「a=++i」是對變數i進行了前置自增運算後再進行賦值運算。

二、運算結果不同:

++i 和 i++,在單獨使用時,就是 i=i+1。而 a = i,相當於「 i=i+1; a = i;」。而 a = i++,相當於「 a = i; i=i+1;」。

三、作用不同:

「a=i++」的作用相當於先將變數i的值儲存到變數a中,再將變數 i 的的值加 1 。「a=++i」相當於將變數 i 的值先加 1 再儲存到變數 a 中。

4樓:匿名使用者

前者可分解為a=i,i=i+1,即i的值先賦給a,i再加1; 後者指i=i+1,a=i,即i先加1,再把加1後的值賦給a;

兩者的區別在於:比如i=1;前者得到的結果是a=1;i=2;後者是a=2,i=2;

希望對你有幫助。嘿嘿~

5樓:匿名使用者

前者運算:先是賦值等於a後。右邊再加1。後者是運算:先加1賦值等於左邊a。例i為3.則首先左式a=i++ 結果a=3, 而a=++i結果是a=4

6樓:的橋

前置運算與後置運算。

假設i=5;

a=i++;a=i;i++)

a=5,i=6;

a=++i;(+i,a=i)

i=6,a=6,

7樓:匿名使用者

a=i++這個是取i再自加,a=++i這個是先自加再取i

8樓:匿名使用者

一直以來,++語法浪費了太多人的時間。說句實在話,++在c語言中其實是一個很細節的語法,除了表達簡練外,真的沒有什麼其它的好處了。

由於中國的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++。

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

c語言*a+i 與*(a+i)有什麼區別

9樓:

*a+i

取出指標a的值,然後與變數i求和。

*(a+i)

取出指標a向後偏移i個地址的值。

10樓:天雨下凡

假設有如下**:

int a[5]=;

int i=3;

則*a+i的值為a[0]+i=1+3=4

而*(a+i)的值為a[0+i]=a[3]=7

c語言中為什麼i=-a++和i=-(a++),i和a的值運算結果都是一樣的?

11樓:一顆程式猿

自增/自減運算的優先順序比正/負運算高, 所以這兩個表示式在運算順序上是一樣的。

其次, a++,自增在後,表示式的值取a的原值, 比如a=3; i=a++;i的值是3,a的值是4

所以你給出的表示式, i結果為-3, a結果為4也不用太過於追究, 這個東西也不見得永遠是對的, 這個跟你使用的編譯器有一定關係,知道怎麼回事就行了,也就是在學習/考試的時候會出現, 正常人不會用這麼彆扭的寫法。

12樓:搗蒜大師

i=-(a++)是。

a先自己加a變成4

然後a自增之前的值3取負號給i

因為++在後面。

i是-3~~~i=-(a)

就是a自己加變成4

把增加之後的值4取負號給i

i就是-4

c語言中a表示一個陣列,a[i++]與a[++i]到底有什麼區別?

13樓:l語言之父

a[i++]和a[++i]的區別:

異同點:a[i++]中i++是後自增,必須先使用當前元素的值再使用下一個元素的值,a[++i]中++i是前自增,可以直接使用下一個元素的值。

例子:# include

int main ()

;int i = 0;

printf("%d",a[i++]本輸出的值為1,因為是i++,所以是先使用a[0]的值,再加上1,即先輸出a[0]的值。

i = 0;

printf("%d",a[++i]);本輸出的值為2,因為++i,所以直接使i加1,即輸出a[1]的值。

return 0;}

14樓:匿名使用者

舉個例子給是說吧。

int narray[4] =

int i = 0;

int a = narray[i++]

i = 0;

int b = narray[++i];

//上面這個例子中,最後 a = 7,b = 4,//i++ 是使用i的值,然後使用完以後再自增1//+i 是先把i自增1,然後再使用i的值//所以a = narray[i++]就相當於a = narray[i]; i = i + 1;

//b = narray[++i]; 就相當於 i = i + 1; b = narray[i];

//這麼說你應該明白了吧。

15樓:倒黴熊

a[i++]相當於 a[i] i=i+1a[++i] 相當於 i=i+1 a[i]也就是說 一個先。

使用i的值,然後改變i的值,一個先改變i的值,然後使用i的值。

例如 如果一開始 i=3 則 a[i++]就是 a[3] 而 a[++i]就是a[4]

c語言中i++和++i的區別

16樓:頓遊融語風

i++是先取值後+1;++i是先+1後取值。

比如:i==5,j==4;

則執行j+i++運算後。

表示式值為9,i值為6;

而執行++i+j運算後表示式值為10,i值為6.

17樓:匿名使用者

++i是先進行自加運算,在進行其他運算;

i++是先進行其他運算,再進行自加運算;

舉個例子—— a=0,i=1,a=++i. 由於i先進行自加運算,為2,再賦值給a,所以 a=2,i=2;

18樓:網友

i++ 表示先代入i執行語句, 執行完執行i+1

++i 表示先執行i+1, 然後試用i執行語句。

19樓:池州學院

i++是後加,++i是前加,i++是i的值傳遞後在加,++i是加過在傳值。

20樓:紅領巾飄過

i++是先引用後自加。如n=0;i=0;n=i++;則結果為n=0;i=1;

++i是先自加後飲用。如n=0;i=0;n=++i;則結果為n=1;i=1;

21樓:匿名使用者

唉。。好好看書 或者 自己輸出來 自己看!!

c語言中a->s[i]與a[i].s的區別

22樓:匿名使用者

a->s[i]是a地址上的結構體成抄。

員變數s的第i個元素。

寫成非指標的方式,就是a[0].s[i];

這種寫法,要求a和s都必須是指標型別。

a[i].s是a地址上,第i個a中的成員變數s。

這種寫法,要求a必須是指標,而s不一定是指標。

對比a[0].s[i]和a[i].s,可以看出,這兩個是完全不同的意義。

23樓:匿名使用者

在函式int fun( strec *a, strec *b )你這裡傳送引數是指標。

當a為指標時 ,a->s[i]等價於(專*a).s[i]如果你改成int fun(strec a,strec b)就能用a[i].s了。屬。

24樓:匿名使用者

a是結構體陣列。

的陣列名,a[i]表示陣列中的第i+1個元素,a[i].s表示該結構體中的元內素s,這就是 . 運算子的作。

故a[i].s <=a+i)->s

25樓:舞亦香滿衣

a[i].s 是屬性的訪問方式。

a->s[i]是指標的訪問方式。

26樓:匿名使用者

a->s[i]這本來就是錯的!s是int型別,又不是陣列,也不是指標!

c語言中a+i是地址嗎,書上說a+i是a[i]的指標,既然這樣,那麼*(a+i)為什麼還是

27樓:

a+i其實就是&a[i],肯定是地址。

*(a+i)其實就是a[i],如果a是二給陣列的陣列名,a[i]就肯定是地址(等同於&a[i][0]),如果a只是一維陣列(指標陣列除外)的陣列名,a[i]就不是地址(原因是:二維陣列可以看作是多個一維陣列組成,即陣列的陣列)

*(a+i)+j就是&a[i][j],如果陣列a是二維陣列那就肯定也是地址啦。

a[i][j]則是表示為*(*a+i)+j)

28樓:匿名使用者

a應該是指的陣列名字吧。

你首先應該知道陣列名字本身就是地址了。

a+i是說a的地址向後在移動i個位置。

也就是a[i]

a是指的陣列的首地址,開頭的位置。

*(a+i) 也就是*a[i] 也就是a[i]的地址,只是這個地址離首地址偏移了i位置。

再加上j 就是 a[i][j]地址。

*(a+i)+j是針對二維陣列來說的,也可以說是特殊的一維陣列。

29樓:賽罡諫陽澤

是地址,你要取值是要*(

*(a+i)+j)的。

*(a+i)其實就是a[i][0]的地址。

c語言,c語言,C語言中 與 的區別

第4題 include using namespace std void main else 這兒是隨機生成 else 這兒是隨機生成 int main 第7題 include strinv char str str n 0 int main 本來想幫你全做的,不過6,7好像有人做了,那就幫你做了4...

c語言中《與《的區別是什麼,C語言中 與 的區別是什麼?

舉個例子你就明白了。像 這些比較常用一點兒。比如 int a a 2 與 a 2 效果是不一樣的,a 2,並未改變a的值,但是a 2,效果等於a a 2 a的值實際上是增加了2.所以 也是一樣的,a 2這句只是一個運算,就是a左移2位,但是並未改變a的值,但是a 2,相當於 a a 2,改變了a的值...

c語言中c與s的區別,c語言中 c與 s的有什麼區別?

mxx米小夕 c語言中 c格式符表示輸出的是字元 s格式符表示輸出的是字串。c語言基本構成 1.資料型別 c的資料型別包括 整型 字元型 實型或浮點型 單精度和雙精度 列舉型別 陣列型別 結構體型別 共用體型別 指標型別和空型別。2.常量與變數 常量其值不可改變,符號常量名通常用大寫。變數是以某識別...