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

c語言自增1是遇到分號時自增嗎

發布時間: 2022-08-30 16:09:49

c語言中,i++的問題 請問什麼時候I++自增

關於自增自減的問題 ,其實是執行完i++這個表達式之後i就已經自增一了,你寫的這個是個逗號表達式,它是按從左至右的順序執行,但是輸出的是表達式3,(逗號表達式可以寫為 : 表達式1,表達式2,表達式3;)如果輸出這個逗號表達式的值的話就是輸出b+4的值,
但是再執行完這條語句之後下面如果再用到i的話 i 就是自增後的值

㈡ 關於C語言增量符號使用

這個問題雖小,但是學問挺大!!!@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
【第一條】、關於自增自減運算,很多書籍沒有把問題講清楚,在C語言里是這樣的:
1.後置運算:k++表示先運算,後自加。
意思是遇到k++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。
那麼,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到分號;表示
語句執行完了,所以k才自加1。】
2.前置運算:++k表示先自加,後運算
這個意思就是遇到++k了,先把k的值加了1,再往後執行別的。
掌握好這兩點,k--和--k也是一樣的道理。
【第二條】、對於多個自增自減運算組合時,在不同的編譯器上運行時會有不同的結果。
但是在C語言里的組合順序如gaozhen所說[「對於++
,--
C編譯系統在處理時盡可能多的(
自左往右)將若干個字元組成一個運算符」]。
結合這兩點,我們就可以來解決這個問題了。
首先,根據【第二條】,結合順序是a=a+++b+++c;等價於a=(a++)+(b++)+c;
其次,根據【第一條】,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到
分號;表示
語句執行完了,所以k才自加1。】
那麼,就可以得到結果了。
先是不管自加的事情,取a、b的當前值(都是1)和c(值為1)相加賦給a,即a=1+1+1=3;
然後遇到分號語句結束時再去管自加1,即a+1,b+1。而a的當前值已經是3了,故
a=a+1=4;b的當前值是1,故b=b+1=2;
所以本題答案的正確結果是
4.

㈢ C語言自增自減

在表達式里,像題目這種++,--。在變數前面就是先自增自減再取變數值。在變數後面先取變數值再自增自減。
比如:j=i++;意思就是先取i的值賦值給j,以後i再自增。後面代碼也是這個意思。你可用這個思路跟著代碼走一遍。

㈣ 關於C語言自增運算符的問題

運行以下代碼,可能會幫你理解
intmain()
{
intcount=0;
printf("%d%d%d ",count++,count++,count++);
printf("%d ",count);//後綴,先使用變數,待本語句結束後(遇到分號後),其值才會真正進行改變!

count=0;
printf("%d%d%d ",++count,++count,++count);//printf參數輸出,從右向左(在我的機器上是這樣,也許不同機器有不同),前綴,先改變變數,後使用變數
printf("%d ",count);
count=0;
printf("%d%d%d ",count++,++count,count++);
printf("%d ",count);
return0;
}

㈤ C語言自增運算

k=(i++)+(++i)+(i++);
你可犯了個大的錯誤啊,你要想得出正解就要這樣定義
int r, s, t;
r = ++i;
s = ++i;
t = ++i;
k = r + s + t;
因為分號是一個順序點,C編譯器k=(i++)+(++i)+(i++); 的編譯順序是任意的,它要,理論上所有++操作和賦值操作的副作用都要在分號之後才生成。但是這一點並不是強制編譯器必須要等到分號結束之後才執行賦值操作,只是規定相鄰兩個順序點之間的表達式求值所產生的副作用只有等到下一個順序點結束才是確定的。而在這個順序點結束之前,編譯器對位於該個順序點和前一個順序點之間的表達式以任意順序求值,k=(i++)+(++i)+(i++); 表達式都違反了C語言有關順序點的規定,編譯器給出的值也具有一定的任意性,沒有人能確切地告訴你它們的值,你只能去問編譯器了。所以我建議你不要這樣寫,以後做軟體可要注意啊!

㈥ 關於c語言自增運算符的問題。

a++ 就是這個值在運算時是a 在運算後變成了a+1
++a 就是這個值在運算時是a+1
在後的是先運算後加減
在前的是先加減在運算

a++>3 不成立

c=a++;
c>3不成立
先後就只在一個語句里看,有分號了就是下個語句了

這個你還是追問唄=。=這樣多累啊。
就是說比如 a++ >3 ;這個 在這個語句中他是先看a是不是大於3 結果她不成立,然後給a加1
那麼
再比如c=a++; 這個就是給c帶入了a的值就是3 然後給a加1 然後判斷c>3那麼c是等於3的。而這時的a是等於4的。。。剛剛寫錯了哈,2個都是不成立的

不成立c的賦值在a變成4前完成的。除非你再給他賦值成4一次。

是有問題=。=我還以為你只是大致寫下看看呢=。=你的理解上有問題,打字很難說,你要麼找個會的同學口頭上說,要麼去問問老師。

㈦ c語言 ++問題

個人理解:++a與a++,到底什麼時候a會自增1,是看這條語句的結束的,也就是;(分號所在的位置),++a是a先自增1之後再執行這條語句,而a++是這條語句執行完畢後即遇到;(分號)結束時,a再自增1;循環什麼的,只要是在分號之後的,就對a的自增沒啥影響。
你看能理解不。

㈧ C語言中自增運算符的困惑

++ 的運算等級確實高於 -;
但是如果是 i++的話,他的自增要等到遇到第一個分號 ;時候才自增,就是當前語句結束後,i才會自增,在這個語句結束前,它都是原來的值。
如果是++i的話就是先自增,這時候就能體現出++的運算等級高於-了;
如果你分不清,就記住如果++在後就是等該條語句結束後再自增,++在前就是先自增然後再運算。

㈨ 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

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

(9)c語言自增1是遇到分號時自增嗎擴展閱讀:

後綴表達式 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後新增。