c語言中的i怎麼理解?我不是很明白你所說的自右

2022-03-10 01:36:20 字數 6425 閱讀 5056

1樓:金色潛鳥

i=1;

(1)i++; 自增語句, 等於 i = i + 1; 得 i=2.

(2)x = i++ ; 表示式裡字尾加,表示式裡 i 不變 為 1,得 x = 1; 出了這個語句,i 自增為2。

(3) 逗號表示式 (a++,b++,i++), 逗號表示式的值 等於 最右一個表示式的值,即等於 i++. 字尾加,表示式裡 i 不變 為 1.

如果是字首加(a++,b++,++i), ,表示式裡i則要增1,出了這句 i 不再增。

語句 x = (a++,b++,i++); x 得 1,出了這句,a增1,b增1,i增1

語句 x = (a++,b++,++i); x 得 2, 出了這句,a增1,b增1,i 不再增.

2樓:匿名使用者

舉個例子

int i=3;i 表示表示式i 先取i的值,表示式的值是3,然後i做自增運算,此時i=4。

i表示i先做自增運算,此時i=4,之後表示式 i才取i的值,表示式的值是4

3樓:匿名使用者

i++基本上你就可以理解成i=i+1,就是自動加一就行了,不用考慮那麼多

4樓:郭潔

多遇見幾種這樣的情況就知道了,彆著急~老師肯定講的更清楚。我開始也不明白,等你學到後來,以前不理解的,都迎刃而解了~

5樓:戀馨無悔

自加運算,執行一次值增加1.注意和++i區分開,雖然區別很小

c語言中結合性自右向左怎麼理解

6樓:匿名使用者

1、簡單說就是,bai從表示式右

du邊開始zhi執行;

只有同優先順序dao的運算子才具有結合性內「自左至右」或容者「自右自左」一說。

2、exp(不同優先順序運算子,依據優先順序高低進行運算):

int a = 1, b =10, c = 30;

int a = a * b + c;

因為 * 比 + 的運算子優先順序高,所以

先計算a * b (先計算左邊,未考慮結合性),在計算 10 + c結果是 a = 300

exp(同優先順序運算子依據結合性進行運算):

int a, b = 1, c = 8;

a = b = c;

賦值運算子其結合性即為自右向左,即 a = ( b = c), 其結果是 b = 8, a = 8;

(錯誤答案:自左向右進行結合的話a = 1)

7樓:魔斯漢堡包

簡單說就是,從表

bai達式右邊開始du

執行;只有同zhi優先順序的運算子才具有結dao合性「自左至右」或內者「容自右自左」一說。

exp(不同優先順序運算子,依據優先順序高低進行運算):

int a = 1, b =10, c = 30;

int a = a * b + c;

因為 * 比 + 的運算子優先順序高,所以

先計算a * b (先計算左邊,未考慮結合性),在計算 10 + c結果是 a = 300

exp(同優先順序運算子依據結合性進行運算):

int a, b = 1, c = 8;

a = b = c;

賦值運算子其結合性即為自右向左,即 a = ( b = c), 其結果是 b = 8, a = 8;

(錯誤答案:自左向右進行結合的話a = 1)

c語言?:自右向左怎麼理解

8樓:dnf李力雄

a1 ? a2 : a3 三目運算子,就是if.....else。

運算順序自左向右啊,不是自右向左。

先判斷a1表示式,為真:結果為a2表示式的值為假,結果為a3表示式的值

9樓:王者不農藥

數學裡: a + b = c, 表示 a 加上 b 等於 c

c語言裡 c = a + b 表示 a 加上 b 的結果賦值給 c

10樓:

你是指的c語言的編譯順序嗎,我印象中它的語句編譯的順序是自由向左的,例如++a,a++

c語言中,-i++是什麼意思,怎麼理解?

11樓:匿名使用者

這個問題詢問的是一個表示式裡出現了2個運算子,詢問運算的優先順序:誰先算,誰後算。

假設i的初值為1,-i++將訪問i的值1,對其做取負運算,表示式的值為-1;

++在這裡是一個右結合的運算子,先引用後增加1,在求解出表示式的值之後,i自增為2.

12樓:匿名使用者

這是一個計算表示式,「-」負號的優先順序大於++的優先順序,所以先計算「-i」。

設i=3,如果只是-i++,那麼他的值就是3。

如果是某定義z=-i++,則z的值是2,i的結果在結束後依然為3。

這個運算分三步。第一步:運算-i,i自減1,i等於2;第二步:i賦值給z,z=2;第三步:i後自加,i++,i等於3。

像這樣的題目一定要先注意i是前自加還是後自加,以及運算子號的優先順序。如x=-i++第一步算:x=-i 同x1=x-i:

其中x為運算前的x。而x1是等於前x的值減去i。第二步算:

i++,經過第一步後i的值不會變,x值變化,運算完後其x於i結果是相當於 運算前的x減去運算前的i 與 運算前的i加1。這是c語言的優先順序造成的。

c語言中什麼情況下是從右向左運算的?

13樓:愛夏的你呀

c語言的入參是從右到左的,因此引數入棧的時候,是後進先出。這樣第一個引數才能第一個出來,所以c語言支援可變數量引數,能夠從左到右的順序讀取引數。

在c語言標準中好像並沒有看到有關表述。引數入棧的方式應該是作業系統所實現,由gcc等編譯器轉換成機器語言。

作為一門跨平臺的程式語言,一般都是很抽象的,儘量與底層脫鉤。比如在c語言標準的文件,對位元組,位元等的定義都是很抽象的,只是資料型別,與底層無關。

左移就是把一個數的所有位都向左移動若干位,在c中用《運算子。

例如:int i = 1;

i = i << 2; //把i裡的值左移2位

擴充套件資料

1、左移裡一個比較特殊的情況是當左移的位數超過該數值型別的最大位數時,編譯器會用左移的位數去模型別的最大位數,然後按餘數進行移位

2、符號位向右移動後,正數的話補0,負數補1。也就是組合語言中的算術右移,同樣當移動的位數超過型別的長度時,會取餘數,然後移動餘數個位。

14樓:

下面三種運算是從右向左運算。

1賦值,複合賦值;

2條件運算;

3單目運算子。

15樓:匿名使用者

在一些特殊的運算

符的情況下,是從右向左運算的。

這些運算子有

邏輯非運算子!

按位取反運算子~

自增運算子++

自減運算子--

負號運算子-

指標運算子*

取地址運算子&

長度運算子sizeof

型別轉換運算子(型別)

條件運算子? :

賦值運算子= += -= *= /= %= >>= <<= &= ^= |=

你在樓上說的那個確實是先算出右邊的再輸出的。

前幾天做一個題目的時候剛好測試過~

但是應該是輸出1,1吧

是先輸出然後i再自加的吧。

你可以在這個printf語句後面再加一個printf函式輸出i,就發現已經是2了

或者你把i++改成++i,就會發現輸出兩個2

16樓:尺蠖丨蚩

一般是複合運算還是自增自減

17樓:匿名使用者

我倒、、printf是函式也。。。跟往**運算有什麼關係。。。。

事實上弄了半天我還是沒搞懂什麼叫從右往左運算。。。

如何理解c語言的左結合 和右結合性

18樓:超級一起的回憶

意思是:從表示式右邊開始執行;只有同優先順序的運算子才具有結合性「自左至右」或者「自右自左」一說。

有些運算子的優先順序是錯誤的。

「當按照常規方式使用時,可能引起誤會的任何運算子」就是存在錯誤優先順序的運算子。

.的優先順序高於*。->操作符用於消除這個問題。

*p.f變成了*(p.f)而不是(*p).f

高於*,於是int *ap中的ap變成了元素為int指標的陣列。

函式()高於*,因此,int *fp()不再是函式指標了,而是一個函式,返回int *。

逗號運算子在所有運算子中優先順序最低,所以,i = 1, 2就成了(i = 1), 2而不是i = (1, 2)。

逗號運算子的值是最右邊運算元的值,逗號運算子結合性從左至右,因此又稱為順序求值運算子。

19樓:

指的是程式在計算時的計算順序,比如算 1+2+3+4左結合性:

1+2+3+4 =

3+3+4

6+410

而右結合性是相反的。

當然計算的順序跟運算子號的優先順序有關,先優先順序再考慮結合性。

c語言中-i++是什麼意思啊!

20樓:匿名使用者

這個知識點應該是++i和i++的區別。要是i++是先用再加一,而++i是先加一後用。如int i=1,a;a=i++;此時:a=1,i=2;a=++i;此時:a=2,i=2;

21樓:匿名使用者

要從兩方面來看,如果只是-i++的話,也沒有什麼意義,只會得到i++的結果,也就是i=i+1;如果有個條件x=-i++;的話,那麼i=i+1; 而 x=(-i)++;

22樓:匿名使用者

使i自動加以 ++是自增運算子 - -是自減運算子

23樓:巨樹花池嫻

i++就是i=i+1的簡寫,還有i--

++i--i

加減相同道理,不過i++跟++i有區別i++是先執行左操作(如果有的話),++i是先將i值+1,然後執行左運算元.

24樓:力文玉曆環

i++就相當於i=i+1.

先做加法運算,然後再把結果賦值給最左邊的變數i.

25樓:堯奕聲吾碧

算術運算的優先順序高於邏輯運算,所以說這句話的意思是:先i++得i,然後判斷i是否小於4.再使i加1。

26樓:向翠花孝俏

簡單的來說,++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++。

27樓:位同書戴秋

-和++優先順序相同,但他們都是從右到左結合,所以等價於

-(i++)。即想i後自增,再返回相反數。

28樓:興長青義庚

i++是先參加運算後再自身加1,,i++等同於i=i+1,

i--是先參加運算後再自身減1

如i=i-1

++i是先自身加1後

再參加其它運算

i=(i+1),

--i也是同樣道理

i=(i-1)

29樓:邢有福橋裳

i++和++i都表示i=i+1

但前者是先呼叫i的值,再進行自加運算;後者是先進行自加運算,再呼叫;

i--和--i與上面類似,為自減運算

30樓:桓溫廉癸

i++先取值

再自加.

於是a[i++]就是先取a[i]的值.

然後i再自加.

常用於迴圈中對陣列進行操作.

31樓:咎素花單裳

++的優先順序要比-要高,所以是

i加上1再減去i加1<=>(等價於)-(i+1)當然,如果前面的-是負號的話,也就是說i加1的相反數-(i+1)

32樓:樸秀英進甲

i++是增1運算,也就是把i的當前值加1再賦值給i。

33樓:銳元修浦棋

i++是輸出i的值,然後再做+1,++i是先+1,然後才輸出值i++和++i是不一樣的,兩個的計算順序不一樣,i++是先把i輸出,然後才做加1的運算;而++i是先做加1的運算的。

c語言中for迴圈怎麼理解C語言中for迴圈怎麼理解?

for迴圈是程式語言中一種開界的迴圈語句,而迴圈語句由迴圈體及迴圈的終止條件兩部分組成,for迴圈一般形式為 for 單次表示式 條件表示式 末尾迴圈體 執行的中間迴圈體可以為一個語句,也可以為多個語句,當中間迴圈體只有一個語句時,其大括號 可以省略,執行完中間迴圈體後接著執行末尾迴圈體 執行末尾迴...

C語言中的「階乘」怎麼表示,C語言中階乘怎麼輸?

階乘一般自己用遞迴寫一個函式 int fun int n 這兒就只考慮正數的版情況權 c語言中階乘怎麼輸?1 不是直接輸入n!需要一定的演算法才可以實現。具體方法是,首先開啟編輯器,準備好空白的c語言檔案 2 在編輯器中輸入 這裡所謂 n 的階乘,就是從 1 開始乘以比前一個數大 1 的數,一直乘到...

c語言中的感嘆號是怎麼用的,C語言中的感嘆號是怎麼用的

c語言中,感嘆號 是邏輯非運算子,是一個單目運算子,結合順序為自右向左。因為邏輯非運算的結果只有真與假,所以經過邏輯非 運算後的結果只有1 真 或0 假 具體使用方法可以參考如下程式段 int a 3,b char ch d t b a 對整型變數a進行邏輯非運算 t ch 對字元型變數ch進行邏輯...