C語言自增運算,c語言邏輯運算子與自增自減運算子的雜糅運算

時間 2022-08-20 17:22:06

1樓:匿名使用者

++是自增運算子,++k或k++都是讓變數k的值加1;- -是自減運算子,- -k或k- -都是讓變數k減1。運算子位於運算元之前,稱為前置運算子;運算子位於運算元之後,稱為後置運算子。

這兩種運算子的差異是:前置運算子是對變數先遞增(遞減),然後參與其他運算,即先改變變數的值後使用;後置運算子則是變數先參與其他運算,後對變數遞增(遞減),即先使用後改變。

比如:int a=9;

b=a++;(b=9;a=10)

b=++a;(b=10;a=10)

對於你的這道題來說,++i和i++都是一樣的;因為都是改變i的值。

還有,printf("%d\n",sum)少寫了乙個「;」,應該是printf("%d\n",sum);

希望對你有所幫助!

2樓:庫春柔樸軒

首先要理解的是++的優先順序要高於+,在c中,必須先把所有++執行結束後,才會進行+法計算,樓主已經知道a最後的值為8了,固然c=8+8+8。對於d的結果,後++的優先順序雖然高於+,但後++有個特點是,等所有值加完之後,才執行自加,所以d=5+5+5。

ps:我要提醒樓主的是,有時候,自加和自減的運算在不同的編譯環境,會得出不同的結果。所以不必太在意這結果。

3樓:蟻秋珊庫元

汗。。。又是這種問題。。。關於++運算子,只需要掌握一句話裡面乙個變數只++一次的情況,對於多次對同乙個變數++,這種在不同編譯器上結果都是不同的,某些編譯器完全可以以匪夷所思的方式來處理。

例如那個24的結果,vs2010很可能是把a的取值先計算出來,然後再同時代入,就是說三個++a,都被拆成兩部分,a1=a+1=6,a2=a1+1=7,a3=a2+1=8,然後把第三次算得到的a的值a3同時代入,得到8+8+8=24.但是在vs98上面,如果我沒有記錯,就是5+6+7的結果。

4樓:閭丘芷荷乙曾

inta

,b,c,d;a=b

=5;c

=(++a)+(++a)+(++a);d

=(b++)+(b++)+(b++); printf("%d,%d,%d,%d",a,b,c,d);

++a,a要加+1,c中有三個++a,所以要先執行三次++a,然後再進行三下+的運算,執行三次++a,即a=a+1->a=8

然後c=a+a+a=24,

d=(b++)+(b++)+(b++); 先算三個+,然後再算三次b++,所以d=b+b+b=15

然後b++執行三次,b=8

所以a=8,b=8,c=24,d=15

5樓:邰霓雲德懷

--y,++x,是先+1、-1,後計算表示式;而z--是先計算表示式,後減1

所以:計算順序:

y=y-1,結果y=24

x=x+1,結果x=5

z保持原值,z=2

所以:(--y/++x)*z--

=(24/5)*2

=4*2

=8(暫存)

計算完後,z=z+1=3;

然後,再執行z=8(將剛剛計算的z=3覆蓋)注意:24/5,取整,結果是4

6樓:逸

i++是i被使用後再自增1,++i是i自增之後再被使用,把i++換成++i之後,該怎麼樣就怎麼樣啊,自己用編譯器試試不就得了。。。

c語言邏輯運算子與自增自減運算子的雜糅運算

7樓:最大的_大寶寶

走|這涉及乙個執行流程的問題,當執行到if的時候,乙個合理的做法是先選擇走||回的哪條路,然後才是答計算涉及的表示式,這是提高效率的方法,隨之也會帶來所謂的***。如果把式子改為b-- && c++ || a++,結果如你所願,3,0,1。但以書中的例子,(a++ || b-- && c++)把a++計算完成後,發現為真,直接跳轉到後面**了,導致b和c都沒有參與計算,值未被改變。

這個處理方式, 至少從20年前的vc6就是如此了,其他的編譯器是不是遵守這個規矩,以實踐來定。

如圖,cmp判斷a是否為真,為真jne直接跳走,和b、c拜拜了。

8樓:匿名使用者

|邏||

本例最重要的bai原因是‖的運算

du規則:

對於乙個||邏zhi輯或來dao說,只要||左邊專的表示式為假(屬即0)才執行||右邊的表示式,如果||左邊表示式已經為真,那麼會造成所謂的「短路」即||右邊的表示式不再執行。

因為a已經完成自加,為真。右邊的計算就都不進行,保持原值。得到答案。

可以參考類似題目的說明:

9樓:匿名使用者

後++的運算子級別很低,所以這題可以這麼理解(a||b)&c;a++,b++,c++;因為c=0,所以為假,也就是執行else語句,懂沒?

10樓:月之舞磊之天嵐

,電腦抄截圖可以通過快捷

鍵的bai方式進行截圖,快捷鍵的操作指令是duprint screen(簡稱prtsc),在鍵盤上面zhi可以輕鬆地找

到這個dao按鍵,使用這個鍵後就可以實現全屏截圖,但是這種方式比較的單一,只能全屏截圖.有時候通過這種方式截圖不知道**儲存在**去了,這個時候你可以通過畫圖將這個**儲存在其他地方.點選開始選單,在windows附件裡面找...

,電腦截圖可以通過快捷鍵的方式進行截圖,快捷鍵的操作指令是print screen(簡稱prtsc),在鍵盤上面可以輕鬆地找到這個按鍵,使用這個鍵後就可以實現全屏截圖,但是這種方式比較的單一,只能全屏截圖.有時候通過這種方式截圖不知道**儲存在**去了,這個時候你可以通過畫圖將這個**儲存在其他地方.點選開始選單,在windows附件裡面找...

11樓:遺失的迷惘

|這個題可以換成下bai面的du形式:

int a=2, b=1, c=0;

if(a++ || (b-- && c++))printf("%d, %d, %d\n",a,b,c);

else

printf("aaa\n");

這樣看著zhi

就比較順眼了dao,在執行運算子

專:||

由於a++ >0因此表示式為真(截斷

屬法則),||右邊的不再執行,也就是(b-- && c++)不再執行。

因此,a=3,b=1,c=0

12樓:青溪半里

優先順序不同,書本上有優先順序的比較,多看看

13樓:lzw我為王

這個很難說,copy隨著時代在進步,bai科技在

發展du,發展的同時就會有淘汰,要想zhi

不被社會dao淘汰,只有不斷的給自己充電,讓自己變得更好更強,那樣就會活的越來越好這個很難說,隨著時代在進步,科技在發展,發展的同時就會有淘汰,要想不被社會淘汰,只有不斷的給自己充電,讓自己變得更好更強,那樣就會活的越來越好了

c語言自增自減運算子用法

14樓:匿名使用者

a+++4等價於(a++)+4 從左到右盡可能多的取運算子

先理解自增自減的含義,他的作用就是使變數加一,這個是不會受到是字首或是字尾的影響的

(a++)+4=7 a=4

15樓:匿名使用者

c語言的抄前置++和後置++,稱為自增運算子前置--和後置--稱為自減運算子,下面以自增運算子的區別來加以介紹,自減類似

如果單獨寫 自增運算子為乙個語句,二者沒有區別++i; 和 i++; 都是讓i+1賦值給i但是如果把自增運算子寫入到另外表示式中二者就有很大區別了例如i=5;

j=i++;

執行後i為6,j為5

i=5;

j=++i;

執行後i為6,j為6

16樓:戀心

++a是先自加後操作,a++是先操作後自加,--也類同。

a+++4這種題是很容易混淆的,版而且對於一些運算規則權,不同的編譯系統有不同的規定,不建議樓主使用。

如果是作業題的話,直接用程式執行看看結果是多少就行了。

17樓:

int a[3];

for(i=0;i<3;) scanf("%d",a[i++]);

正確int a[3];

for(i=0;i<3;) scanf("%d",a[++i]);

下標越界

for(i=0;i<3;) scanf("%d",a[i++]);

相當for(i=0;i<3;)即回

for(i=0;i<3;i++) scanf("%d",a[i]);

而for(i=0;i<3;) scanf("%d",a[++i]);

相當for(i=0;i<3;)

所以下答標越界

18樓:匿名使用者

a+++4難道是++4優先????

c語言自增運算子

19樓:匿名使用者

第乙個返回沒加前的值 i=41

第二個返回加了的值 i=42

第三個返回減之前的值 i=41

第四個返回減之後的值 i = 40

遞增函式可以看成這樣

int 後遞增(int *i)

int 前遞增(int *i)

20樓:金色潛鳥

(1)printf("%d", i++); 字尾,表示式裡用 i, 出了表示式 自增1,故,分解為: printf("%d", i); i=i+1;

(2) printf("%d", ++i); 字首,先自增,後用於表示式,故,分解為: i=i+1; printf("%d", i);

(3)(4) 同理,printf("%d", i--); 分解為:printf("%d", i); i=i-1;

printf("%d", --i); 分解為: i=i-1; printf("%d", i);

把分解後的語句組合起來,就可看出,輸出為 40 42 42 40

21樓:silly凌斯琪

自加或自減唄

i++是先將i的值傳過去列印在讓i+1

++i是先將i+1在把值傳過去列印

關於c語言左右自增運算

22樓:鹽山小伙啊

c語言的前置++和後置++,稱為自增運算子如果單獨寫 自增運算子為乙個語句,二者沒有區別++i; 和 i++; 都是讓i+1賦值給i但是如果把自增運算子寫入到另外表示式中二者就有很大區別了。

例如1、

i=5;

j=i++;此處表示式等價於「j=i;i=i+1;」兩條表示式。

執行後i為6,j為5

2、i=5;

j=++i;此處表示式等價於「i=i+1;j=i;」兩條表示式。

執行後i為6,j為6

注:通過上述例子,可以看出運算順序產生了區別,導致了輸出結果產生不同。

23樓:匿名使用者

a++,這個表示式的作用是先返回a的值,再將a++而++a,這個表示式的作用是先將a++,在返回a的值,也就是說

a=0;b=a++;執行這兩句後,b=a的值(0),在將a++,即a的值為1,b的值為0

a=0;b=++a;執行這兩句後,先將a++,再b=a的值(1),即a的值為1,b的值也為1

通常,可以這樣記

a++,a在前面,所以先返回是原來a的值,在做+法。

++a,++在前面,所以先做加法,在返回值是原來a的值+1.

c語言 自增,自減運算子,求解,C語言 自增,自減運算子,求解

計算的過程是取決於編譯器的。不同的編譯器得出的結果可能不同。這種題目就不應該用來考學生,根本沒有固定答案,不知道為什麼教c的老師總是會出這種題目。去來解釋一下 對於自增和自減計算,在不同的機器上因為解釋稍有不同,所以會得到不同的結果。在你的機器上得到15和22這樣的結果,你的機器是這樣計算的 1 p...

C語言的逗號運算子,C語言中逗號運算子怎麼用

是的,賦值運算的優先順序高於逗號運算子,所以先計算y x a b 再計算 b c 整個逗號表示式y x a b b c 的值為b c 然而並沒有卵用 沒有賦值 故 最後y x a b 你的理解是正確的。我估計是 程式漏了一對 小括號 y x a b b c 意思是把逗號 表示式的 值賦給y 這樣就有...

c語言的或運算和自增運算,c語言中指標運算子 和自增運算子 的優先順序

a與 a是先加 減 再用 a 與a 是先用後加 減 是如果前面運算為0後面就不運算 是如果前面運算為1後面就不運算 a 與 a的運算都比 高 問題1 int a,b a b 1 a b a b a a就為2,所以b 1後面就不運算了 include void main 問題二 int a,b a b...

什麼是指標運算子,c語言 指標運算子和指標說明符有什麼區別

指標運算子是 c c 中的說法。在c c 中有兩個關於指標的運算子 運算子 取位址運算子,m即是變數m在記憶體中的實際位址。運算子 指標運算子 通常稱為間接引用運算子 indirection operator或復引用運算子 dereferencing operator 它返回其運算元 即乙個指標 所...

是什麼運算子,c語言中運算子「 」的作用是什麼?

百分號 是 求餘運算10 3 1 10 3 3 1 算術運算 arithmetic operators 符號,就是用來處理四則運算的符號,這是最簡單,也最常用的符號,尤其是數字的處理,幾乎都會使用到算術運算符號。算術運算子 含義 示例 1 加號 加法運算 3 3 2 減號 減法運算 3 1 負 1 ...