C 中,int i 1 表示式 i i i 的結果是多少?最終i值又是多少?

2025-02-23 07:35:21 字數 3085 閱讀 9839

1樓:餘同書由君

如果順序點是語句末尾的話,那麼。

i++)i)+(i--)

等價於。i=i+1;

+i在執行語句前就生效。

i+i+i;

i=i+1;

i++在語句執行後生效。

i=i-1;

i--在語句執行後生效。

6也是最符合預期的結果,語句末尾看作順序點是最自然的。

但c/c++沒有對順序點做嚴格規定(但分號一定是乙個順序點),所以不同的編譯器。

結果可能不同。

比如vc6結果可能是7,vc6會把(i++)i)這段看做順序點,那就是這樣的邏輯了:

inttemp;

方便描述弄個temp

i=i+1;

temp=i+i;

i=i+1;

temp=temp+i;

i=i-1;

這種語句在正常的軟體開發中是不允許出現的,但偏偏有些垃圾出題者就愛出這種不確定的東西。

2樓:禾玉芬芮秋

i++ 先將i取負,然後加1,但++放在變數後面,表示先使用,後加,即在下一次使用時才加1,上圖中printf()中的-i++,i是從右向左運算,先計算i的值,然後再計算-i++的值,具體是從左向右,還是從右向左,要看具體用那個編譯器。如果再輸出i值,他將變為6:,見下圖:

這點需要慢慢理解,有點繞。

如果int i=3;k=(i++)+(++i)+(i++);執行過後k的值為()i的值為()

3樓:教育仁昌

int i=3;k=(i++)i)+(i++)執行過後k的值為,i的值為。

i++意思是i先加後面的數再自加。++i是先自加後計算。因為 i=3,所以,從左至右根據優先順序,第乙個(i++)為(3++)=3,而i=4;到第二個(++i)時,為(++4)=5,而i=5;到第三個(i++)為(5++)=5,而i=6。

總的來看k=(i++)i)+(i++)=3+5+5=。

4樓:四舍**入

k=12 i=6

作為單獨的語句:i++和++i;沒有區別,都是自增1,相當於 i=i+1;這裡所要考慮到運算優先順序從左至右,即先計算(i++)i)即3+4=7,然後7在與i++計算,此時的i經過兩次自增i=5,所以表示式i++為5,所以,即k=3+4+5=12,i經過3次自增即i=3+1+1+1=6。

5樓:網友

i++ =3,然後i參與運算此時 i=4 而後 ++i 便 i=i+1 =5 ,而後i++和前面的一樣 i++=5,如果後面無論再參加什麼運算或者什麼動作i都會加1,所以 (3)+(5)+(5)=13

6樓:

k=13,i=意思是i先加後面的數再自加。++i是先自加後計算。而且加減運演算法則先算括號裡的類似於數學。

7樓:網友

三個地方有 i,第乙個,i++ =3, 此時i=4,第二個++i =5,此時 i=5,第三個 i++= 5,此時 i=6;

所以k=3 + 5 + 5 k=

int i=10%3;if(i<2) i++;else i--;輸出i的值是

8樓:

摘要。int i=10%3;if(i<2) i++;else i--;輸出i的值是。

親,輸出這個。

能看得清?輸出2

第一行 求餘 得1

第二行 判斷是否小於2 i等於1,小於2

i++ 自增輸出2

答案是2 ?

嗯嗯。希望我的對你有幫助,祝您生活愉快謝謝<>

c語言,int i=5;i+=i++; i的值是多少?

9樓:在晴天的雨傘

關於這個問題,你一定要理解優先順序的意義~

所謂優先順序,就是在執行乙個運算時的順序,比如我們小時候學的先乘除,後加減,意思就是3+5*4這個式子我們是先算後面的5*4,那麼如果有個括號,(3+5)*4,那麼,就是先算3+5了,為什麼?因為乘除法的優先順序比加減法高,而括號的優先順序又比乘除法要高~如果是相同優先順序就是從左到右依次計算了。

我們換到你這道題上,+=這個運算子的優先順序比++這個運算子低,所以先算++這個運算子,關於這個自加運算子,有是乙個考點,++i是先+1,再使用,而i++是先使用,後+1,考慮到你剛接觸c語言不久,這條規則你先死記下來,以後慢慢就會明白~

i是5,加1變成6,+=運算子意思是這樣的,比如x+=y,就是x=x+y,你也可以理解成把等號移到前面,然後再加乙個最開始得字元`

現在我們看這道題目就簡單了,i先加一再使用,就變成了6,i=i+i,這時候系統裡的i已經是6了,所以就是6+6=12

10樓:紅柿子炒番茄

這個題很好入手,慢慢來,我們先看表示式兩邊,由於字尾自加i++的優先順序是大於複合加法運算子的+=,所以先計算i++,值為5,再執行i+=,值為6,結果為11,bingo!

int i; i = 5; i++的時候等於多少? 為什麼

11樓:匿名使用者

i=6,符號++就是自己加1 的意思,所以五加一就是六。

int i=1;i+=i+++++i; 然後 i = ?

12樓:張三**

首先看結果,然後再來分析原因。

i +=i++ i

等價於 i = i + i++)i)

等價於 i = 1 + 1 + 3

所以結果是5

這樣的原因有兩個:

基於上面說的原因,所以該式子的孝喊結合方式為 i = i + i++)i)

然後還有另外乙個問題,就是為什麼++i最後的值會是3,這個涉及到i++和++i的區巧兄野別。

其實無論 i++ 還是 ++i ,都是先+1,然後參與運算而不是 ++i 先加1,然後運算,而i++ 先運算塵好後加1。

只不過 i++ 是先將i的賦值給乙個臨時變數,然後用那個臨時變數替換掉 i++ 然後將 i 的值+1

通過 i++ 和 ++i 的區別就能解釋同為什麼上面那個式子的i的值是3

請問在c語言中for迴圈語句表示式1中能否定義變數?如果可以它的作用域又是什麼

標準c語言,變數聲 明必須在語句之前,for 小括號中宣告 定義變數是語法錯誤。for int i 0 i錯誤。標準c語言,每對花括號之間為乙個域,每個域中可以宣告 定義變數,它的作用域就是花括號之間。花括號套花括號,則外域量 可以作用到 內域,除非 內域 宣告了 同名 變數。int i for i...

jsp中的表示式和表示式有什麼區別

舉個例子更能說明問題 string username abc 下面兩句 是一樣的效果,標識裡面的是jsp 變數 是 out.println 變數 的簡寫方式 使用者 username 使用者 out.println username 是輸出語句,將表示式結果轉換成字串,在頁面輸出 是jsp 片段,在...

在正規表示式中什麼意思,正規表示式中的 或 是什麼意思?

非獲取匹配,匹配冒號後的內容但不獲取匹配結果,不進行儲存供以後使用。單獨的 匹配前面的子表示式零次或一次。當 緊跟在任何乙個其他限制符 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少地匹配所搜尋的字串,而預設的貪婪模式則盡可能多地匹配所搜尋的字串。擴充套件資料正規表示式是對字串 包括普通字元 例如,...