C語言ii問題,有關C語言i 的 i的問題

2022-12-07 17:46:20 字數 4978 閱讀 9253

1樓:穆雪白狼

mian()

{int x,y,z; /* 定義整形變數x y z */

x=y=z; /* 把變數z的值賦給x和y(這時x y z的值是未知的)*/

z=3; /* 給z賦值3 */

y=x++ -1; prinft("%d\t\%d\t",x,y); /*把x-1的值賦給y,然後x加1,輸出x、y*/

y=++x -1; prinft("%d\t\%d\t",x,y); /*x自加1,然後把x-1的值賦給y,輸出x、y*/

y=z-- +1; prinft("%d\t\%d\t",z,y); /*把z-1的值賦給y,然後z減1,輸出z、y*/

y=--z +1; prinft("%d\t\%d\n",z,y); /*z自減1,然後把z+1的值賦給y,輸出z、y*/

感覺第一句和第二句應該換下位置...

2樓:世鑲柳

x=y=z;z=3; 這不就錯了嗎?

3樓:匿名使用者

這程式有問題

x=y=z;z=3;這裡前面的z還沒賦值 所以x,y是隨機值 應

4樓:匿名使用者

程式有問題,

x=y=z之前沒有符初值。

應該是 x=y=z=3;吧

另外 prinft 寫錯了,應該是 printf

有關c語言i++的++i的問題

5樓:匿名使用者

++i表示先把i加1,然後再參與運算!++i的情況下,++的優先順序最高,因此,一個表示式中,所有的++運算完了之後才進行其他的運算,因此:

第一次先執行++i ++i,這時i=3,因此第一次運算結果為9第二次一樣先執行++i ++i 這時i=5,因此第二次運算結果為25第三次同樣,i=7,運算結果為49

i++是i先參加運算,然後再執行i+1運算!

6樓:w休息的風

你要明白,++i是在表示式中先對i進行加1,表示式裡面有兩個++i,所以算乘法的時候i已經等於3了。以此類推,迴圈三次,結果就是9,25,49。

7樓:仙林的琛珏

先算括號,後算乘號。第一個迴圈,i變成2,再變成3。編譯後變成3*3,5*5,7*7。

8樓:李嘉興

編譯器會掃描一條語句,發現++i執行了2次,就將是兩次的結果啊

關於c語言i++,++i的問題,菜鳥級!!!!

9樓:匿名使用者

先把i的值給printf輸出,然後執行i=i+1。而++i是先做加1的運算,然後再把值給printf輸出

10樓:匿名使用者

i++是輸出i的值,然後再做+1

++i是先+1,然後才輸出值

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

所以你上面++i輸出是9,而i++輸出是8

11樓:匿名使用者

i++是先取i的值,然後再給i賦值。

++i是先給i賦值,再取i的值。

i++在printf中執行是先輸出i的值,然後再把i+1賦值給i。

c語言中i++,++i的運算

12樓:匿名使用者

y+=z--/++x => y=y+z/(x+1)=2+3/2=3, z-- => z=2;

注意,x,y,z是整型的話,3/2=1;沒有小數的。

13樓:匿名使用者

考點一:++i和i++的區別

++i先進行自增再參加運算

i++先參加運算,再自增

考點二:

整數相除取整

分解掉y = y+ z/(x+1); z = z-1;

y = 2+3/2 = 2+1 = 3

所以y等於3

你前面肯定要宣告型別的,不然編譯通不過,如果是題目的話,那就是題目出的不完善

c++中 i++,++i的問題 20

14樓:在晴天的雨傘

主要差異在於返回值,相同點在於對i進行自加:

++i返回的是i自加後的內容,i++返回的是i未自加的內容。

舉個例子:

int i = 10;

a = i++;

vs int i = 10;

b = ++i;

結果分別是 i = 11, a = 10和 i = 11, b = 11。

將i++和++i彙編結果,若沒有使用其返回值賦值特性,結果是一樣的,有返回值差異在於彙編**執行先後(先自加還是先賦值)區別。

另外,關於for(i = 0; i < n; i++)與for(i = 0; i < n; ++i) 有差異的說法是扯淡的。現在我們看到的編譯器,基本都會彙編成相同的**(好像有基本經典教程說有差異,那只是針對古老的編譯器)。

15樓:匿名使用者

++i 是 先 i=i+1, 再讓i參與運算i++ 是先讓i參與運算, 然後 i=i+1,所以p = 5 + 5 + 5, ,i自身連續3次加1,所以i = 5+1+1+1=8

j=5+1+1+1 = 8 , q = 8+8+8= 24所以這個程式的答案是8,8,15,24(不是22)

c語言中 a=(i++)*(++i)*(i++)*(++i)*(i++)

16樓:咎易夢

我研究了一下

第一點:i++是在 它所在的表示式 計算完後再 計算

例如:#include "stdio.h"

void main()

這個程式 不管你有多少個i++ 計算結果都是 1

第二點:優先順序高的 先運算

例如:#include "stdio.h"

void main()

這個程式的結果是 4

因為 ++i的優先順序更高 所以他會先計算 計算後 i的值為2 ,++i的值也是2 所以 a=2 (因為優先順序低所以已經為2了)* 2=4;

第三點 : 同等級的運算是從前往後運算的 並且是連線兩個後 成為一個正確 再往後

現在我們來看一下a=(i++)*(++i)*(i++)*(++i)*(i++);

先由於 由於第一點 我們可以把表示式該為a=i*(++i)*i*(++i)*i;

結果還是72 所以第一點正確

再由於第二第三點 先 運算 i * (++i) 這裡運算結果是 4 i=2

然後 * i 結果為 8 i=2

然後 *i}*(++i) 結果為 24 i=3

然後 *i}*(++i)}*i 結果為 72 i=3

最後 執行所有的 i++ 所以i 的值為6 a的值為72

現在來看一下

#include "stdio.h"

void main()

這個的結果為 2

先 i*i 值為1

再 1 * (++i) 值為 2

所以正確

下面#include "stdio.h"

void main()

這個的 結果是4 也說的通

我也是研究出來的 也不知道 真正的是不是這樣的 。。

願意討論討論

17樓:唐泇三勺

int main()

18樓:執事君的黑貓

i的初值是2嗎?

2*3*2*3*2=72

第一個括弧內先用i的值計算,讓後i=i+1第二個括弧內先i=i+1 然後再參與計算

以下同上

19樓:

i++是說明,先計算,計算後這個i才加1,而++i是說明,先加1,再帶入式中計算

20樓:

請停止你們的譚浩強行為……

c語言輸出問題 關於++i和i++

21樓:阿咕嚕

print是從右到左開始運算的,也就是按這個順序來做i++,++i,i*=2。i++是後置自增運算,也就是先使用然後自己加一,所以i++這裡的值為2,這個運算做完之後,因為自增所以i=3,而++i是前置自增運算,是使用之前加一,所以++i的值就為4,然後進行i*=2,所以i就等於8,最後結果應該是8 4 2

22樓:街角哦祝福

printf("%d %d %d \n",i*=2,++i,i++);

是從右邊開始執行的

輸出結果是8 4 2 吧

所以i++表示式的值為2

++i表示式為 4 (i先前已自增1,這裡又自增了1,且++在前面)

i*=2為8

這種東西只要記住printf裡的語句是從右往左執行然後i++和++i都會是i自增1,不同的是i++是表示式i++的值為i(自增前);而

++i則是i+1,這裡的i也是自增前的

這種語句雖然我們避免寫,可是有的是為了考試,出題考你這點,所以這點雖不要寫但是應該要知道的

23樓:舞林人

printf是從右到左依次輸出,故先執行i++,然後執行++i,最後執行i*=2.

i++是先以i的值進行運算,然後i的值在加1,++i反之。

需要注意的是:當printf整個執行完了之後i++,的++才會執行。

你可以在prinf之後檢視i的值,應當是7.

24樓:匿名使用者

printf是反過來算的,先算i++,再算++i,最後i*=2。

25樓:匿名使用者

能在蛋疼點麼?

對這種結果取決於編譯器的問題就不要問了... 世界上沒有人寫這麼蛋疼的**的...

一頭智商正常的豬都不會這麼寫的啊~

C語言問題,c語言問題

int a 4 void main int a 2 這種局 bai部變數,會du隱藏掉上一級 定義zhi的同名變數,下面dao 也是一樣回 中有效。所以上面的復合語句中,會輸出0,下面呼叫sub1時,實際上傳入的是main中的int a 2 又有a a 1,所以會輸出1,下面也是一樣的,main中的...

C語言問題,c語言問題?

include include include typedef struct nodelinknode,link void main link pa s int da int flag 0 pa head 讓pa指向頭結點 dowhile flag 0 link pb head pb pb next...

C語言問題,C語言問題,求助

while語句的執行順序 1.判斷x的值 非0為真,0為假 2.執行 3.執行 裡面的 這裡是空,所以沒任何動作。所以會一直迴圈到x 0,判定為假,迴圈終止。接著執行減減,最後列印結果為 1 c語言問題,求助 這題是迷惑人用的.因為迴圈內部沒有break,所以for會一直執行下去,直到a 11,這時...