當前位置:首頁 » 編程語言 » c語言自增自減題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言自增自減題

發布時間: 2022-09-13 12:58:03

c語言程序設計自增自減問題

n--是先使用n的值,用完之後n=n-1,
--n是先做自減,再使用n的值,
因此,判斷順序是,
n=4,while(4),(n--)n=3,
(--n)輸出2,while(2),(n--)n=1,
(--n)輸出0,
如果還是不太清楚,再提出。

Ⅱ c語言的自增自減問題

計算:從右往左,並輸出到「緩沖區」。

1、緩沖區是一堆棧

2、第一步:處理後面的「i--」。8進入緩沖區,i=7。緩沖區:8 <-(指針)

第二步:處理「i++」。7進入緩沖區,i=8。緩沖區:7 8<-

第三步:處理」--i「。8進入緩沖區,i=7.緩沖區:8 7 8

第四步:處理「++i」 先自增1,然後8進入緩沖區,i=8 .緩沖區: 8 8 7 8

3、輸出緩沖區數據(棧規則):8 8 7 8

另外自增 、自減 、還可能和編譯器有關系 。

(2)c語言自增自減題擴展閱讀:

後綴表達式 2級

postfix-expression [ expression ],數組下標運算。

postfix-expression ( argument-expression-list),函數調用,括弧內的參數可選。

postfix-expression . identifier,成員訪問

postfix-expression -> identifier,成員訪問,->號之前應為指針。

postfix-expression ++,後綴自增

postfix-expression --,後綴自減

( type-name ) { initializer-list }

( type-name ) { initializer-list , } 復合初始化,C99後新增。

Ⅲ C語言自加自減問題~~~~

我舉個例子吧,你看看:
#include<stdio.h>
void
main()
{
int
i=2;
printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
printf("%d\n",i);
}
首先,應該說明的是在不同的編譯環境中結果是不一樣的。
關於本段代碼在VC++6.0中的規則如下:
1、printf函數的執行順序是由右到左的
2、前自增運算符(++i)先加1,再使用i,此時i已經加了1;
3、後自增運算符(i++)先使用i,再加1,***注意這里是關鍵所在,VC++6.0後自增運算是要在整條語句結束以後才自加1的,(VC++6.0比較變態)***
所以:
printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
從右往左運算:
i++得到2(i=2,後加1在整條語句執行完才進行,這里先記下)
i還是2
(i=2,原因見上一行)
++i得到3(i=3,先加1,後使用)
i++得到3(i=3,後加1在整條語句執行完才進行,這里先記下)
所以輸出結果為:3,3,2,2
然後計算剛才的兩次後自增運算後,i=5
printf("%d\n",i);
所以,結果是5

Ⅳ C語言中自增自減的簡單問題


第一題中間應該多了個加號,修改過後的運行結果如圖。

然後第一題的++a是每一次都先加1,然後計算,而a++是計算完成之後才加一。

所以第一題其實是4+4=8;

第二題是3+5=8;

然後a都是加了2次,都是5.

Ⅳ c語言關於自增自減的問題

計算:從右往左,並輸出到「緩沖區」。
2.緩沖區是一堆棧
3.
第一步:處理後面的「i--」。8進入緩沖區,i=7。緩沖區:8
<-(指針)
第二步:處理「i++」。7進入緩沖區,i=8。緩沖區:7
8<-
第三步:處理」--i「。8進入緩沖區,i=7.緩沖區:8
7
8
第四步:處理「++i」
先自增1,然後8進入緩沖區,i=8
.緩沖區:
8
8
7
8
4.輸出緩沖區數據(棧規則):8
8
7
8
另外自增
自減
還可能和編譯器有關系
淡定
語法問題
不要太糾結

Ⅵ C語言自加自減問題

計算:從右往左,並輸出到「緩沖區」。

1、緩沖區是一堆棧

2、第一步:處理後面的「i--」。8進入緩沖區,i=7。緩沖區:8 <-(指針)

第二步:處理「i++」。7進入緩沖區,i=8。緩沖區:7 8<-

第三步:處理」--i「。8進入緩沖區,i=7.緩沖區:8 7 8

第四步:處理「++i」 先自增1,然後8進入緩沖區,i=8 .緩沖區: 8 8 7 8

3、輸出緩沖區數據(棧規則):8 8 7 8

另外自增 、自減 、還可能和編譯器有關系 。

(6)c語言自增自減題擴展閱讀:

後綴表達式 2級

postfix-expression [ expression ],數組下標運算。

postfix-expression ( argument-expression-list),函數調用,括弧內的參數可選。

postfix-expression . identifier,成員訪問,

postfix-expression -> identifier,成員訪問,->號之前應為指針。

postfix-expression ++,後綴自增

postfix-expression --,後綴自減

( type-name ) { initializer-list }

( type-name ) { initializer-list , } 復合初始化,C99後新增。

Ⅶ C語言 自增自減問題

教你個方法,當--或++在後時,就將那個操作放到表達式的後面,
例如
m=(x--)+(x--);
等價於
m=(x)+(x);
x--;
x--;
同理,當--或++在前時,就將那個操作放到表達式的前面
m=(--x)+(x++);
等價於
x--;
m=(x)+(x);
x++;

所以
y=fn(a,++a);
等價於
a = a + 1;
y=fn(a,a);

所以,選D

Ⅷ C語言自增自減運算符我總是搞不明白,圖中這三道題我就又錯了,希望有會的人能給我解答一下

6、x<y?x++:y++這個表達式的意思是 如果x<y為真 就執行x++ ;如果x<y為假 就執行y++ 這里顯然是執行y++ 返回值是2

希望對你有幫助

----滿意採納奧----


4、

首先 i++==1&&(++j==3||k++==3) 是一個邏輯表達式

i++==1&&(++j==3||k++==3) 分為兩部分

i++==1 和 (++j==3||k++==3)

他們的關系是 並且的關系

所以 兩部分都會被執行

i++==1

是先 判斷i是否等於1 (因為++在後面) 此時i=1;

在這句話執行完之後i=2

然後執行第二部分

(++j==3||k++==3)

又分為兩部分

++j==3 和 k++==3 兩部分

這兩部分是 或者的關系

如果第一部分滿足條件 就不執行後面的

如果第一部分不滿足條件 就執行後面的部分

++j==3

是j先自己加1然後判斷j是否等於3

這部分的結果為真

所以後面的部分不執行

最後的結果為 i=2 j=3 k=3

Ⅸ [c語言]自增、自減運算問題

四,關於i++,你完全可以理解為i的值被別的操作用了之後,自身再自增1。在真實的代碼里,編譯器會增加一個臨時變數,比如一個寄存器,用來保存自增之前的值,這個值用於傳遞給printf函數,而在調用printf之前,i可能已經自增1了。因為有臨時變數,所以兩個操作都順利完成了。
六,負號和++優先順序相同,但在表達式中結合的方向是從右到左。即對於-i++,先執行i++,再執行-i。按照上述四的說法,編譯器會給i生成一個和其自增之前相等的臨時變數,用於作負運算。所以-i為8,i在++後為9,各不幹擾
++應該算個難點,自己上機多感受一下,再把運算符的優先順序順序大致記一下,以後程序寫多了,自然就慢慢懂了

Ⅹ 一個c語言自增自減題目不會做。。

if(表達式) 如果是表達式=0 為假, 表達式不等於0為真。

c=a+b ;這是賦值語句,返回最左邊的值,這里是c .

x--; 後綴,先運行該語句,後自減

--x; 前綴,先自減,再運行該語句。

這里 x--<5 . 這里可以看著 ( x<5, x=x-1) 這么一個整體 所以 當輸入5時 ,不運行printf("%d\n",x); 。但是x還是得自減1 ,變成 4. 再到printf("%d\n",x++); x++後是5.但是輸入扔是x=x+1前的值 ,為4