Ⅰ 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