關於C語言自加運算子 的一個問題

2023-05-11 02:35:21 字數 5872 閱讀 9153

1樓:匿名使用者

++—在前先+—,在後後+—。你記住這個就好做題啦。

int a=1,b=1;

a=++a+b;

b=(—b)+a;

b);a=++a+b要先算++a,a=2.在算a=2+b=2+1=3b同上。int a=2,b=1;

a=a--+b;

這個輸出a的值是3.要先算a=a+b=3.後算a--

2樓:菊花鏈

a+++b相當於:

a+b;++a;

不同的編譯器會產生不同的結果所以儘量避免這種表達方式。

3樓:花和尚流氓兔

我覺得這個問題自己去實踐一下最好了~這樣還記憶深刻。你用把各種情況都試試看看結果是什麼樣的。

4樓:靚麗還清湛的標兵

學習過程中寫這樣語句可以加深理解,實際程式設計中寫這種自己都可能繞暈的含混語句,一定會被人罵,儘量用簡潔明瞭不含異議的語句表達,不然,你以為是這樣,而編譯器卻理解成那樣那就壞了,因為那些有歧義內容,在不同的編譯環境下可能會有不同的處理。

a++ b 這個表示式可編譯。

a+++b 這個表示式還可編譯。

a+++b 這個不能編譯了,相當於((a++)b 不合法了。

b 沒事,++b就不行了需要+(+b)才可以總結:類似於五筆中的折字,取大優先,先左後右。

5樓:陸展博

建議你查詢一下貪吃原則。

6樓:匿名使用者

a+++b相當雨(a++)b最後和為2 而最後a=2;b=1

c語言中++(自增運算子)只能用於變數不能用於變數嗎,為什麼?

7樓:yesyes科

只能用於變數不能用於常量,這是語法規定,常量作為只讀變數,直接對常量修改在編譯階段就會報錯,const修飾的變數也是隻讀變數,禁止修改。操作方法如下:

1、首先,定義一個變數i,並賦初值6。

2、接著,實現變數i的自加,注意++號在變數之後。

3、最後,輸出變數i自增後的值,如下圖所示。

4、執行程式,可以看到結果為7,說明成功實現自增。

5、將程式中的自增符號++,移動到變數i之前。

6、執行程式後,可以看到自增後的值還是7,說明單獨使用自增,i++和++i,兩種用法結果是一樣的。

8樓:網友

>>只能用於變數不能用於變數嗎。

是不是要問只能用於變數不能用於常量吧?

如果是這個問題的話,這是語法規定,常量作為只讀變數,直接對常量修改在編譯階段就會報錯const修飾的變數也是隻讀變數,禁止修改。

9樓:網友

什麼叫只能用於變數不能用於變數?

c語言自加++自減運算子資料型別是什麼?

10樓:娛樂小八卦啊

自加++自減--運算的資料型別可以是float和double。

在c語言中,並不是所有變數都可以使用自增自減操作符;可以使用自增自減操作符的資料型別有:int、float、double 、char、long。

自增(++將變數的值加1,分字首式(如++i) 和字尾式(如i++)字首式是先加1再使用;字尾式是先使用再加1。

自減(--將變數的值減1, 分字首式(如--i)和字尾式(如i--)字首式是先減1再使用;字尾式是先使用再減1。

c語言中自增運算子的作用是什麼

11樓:小夏聊生活

不可以是double和float 只可以是整型。

比如 int a; a = 1; a++;a--;

則a = 1

在c語言中還有一種更簡單的寫法,就是a++;或者++a;。這種寫法叫做自加或自增;意思很明確,就是自身加一。

相應的,也有a--和--a,叫做自減,表示自身減一。

和--分別稱為自增和自減運算子。

自增和自減的示例:

#include

執行結果:a=10, b=20

自增自減完成後,需要用新值替換舊值,並將新值儲存在當前變數中。自增自減只能針對變數,不能針對數字,例如10++是錯誤的。

在c語言中自增自減運算子有什麼作用?

12樓:重慶新華電腦學校

這是一類特殊的運算子,自增運算子++和自減運算子—對變數的操作結果是增加1和減少1.例如:

couter; couter-; amount; amount++;

看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:

num1=4; num2=8; a=++num1; b=num2++ a=++r

num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先白增加1變為5,然後賦值給a,最終a也為;這是把num2++的值賦給b,因為白增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為9。

那麼如果出現這樣的情況我們怎麼處理呢?c=num1+++num2;

到底是。c=(num1++)num2;

還是。c=num1+(+num2);

這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。

13樓:匿名使用者

自增 x++ 意思為x=x+1

x自減 x-- 意思為 x=x-1

x

c語言 自加運算子

14樓:金魚

c語言中區分前自增與後自增,它們都有***,尤其是後自增。

前自增可能更好一點,它不產生臨時變數,效率更高一些。

y相當於:y=y+1;在變數的使用之前先自增。

y++相當於:y; 其它語句。y=y+1;也就是使用它時,它的值不變,在其使用之後的某一時刻但在再次使用它前其值加一。而且不同的編譯器不一定有一致的實現行為。

a=(y++)y++)y++)這是一條語句,通常的編譯器實現會將此語句一次性掃描完成。這種情況下,y++會保持其值不變,此語句完成後,將y的值遞增3次。

b=(+y)+(y)+(y)這也是一條語句,編譯器掃描完此語句後,先將y遞增3次,再作+運算,將運算結果賦予b,此時b應該為24。 但是不同的系統及編譯器不一定這樣實現,還有可能y依次遞增,其結果是21。

15樓:網友

1、自加有兩種形式,為i++和++表示先取i的值參與計算,等整個式子運算好了,再給i自增1 .。對於++i 則先把i 自增1得到i的新值 參與計算。

2、先計算str1[i]=str2[j](賦值),再將i j自加一運算。

16樓:幻世滅

++i的話就是先i=i+1,然後再使用自加後的值參加外層的運算。i++就是先參加外層的運算,再自加。

後面這個看不懂就不用管了)

不過其實i++和++i都是運算了之後才參加外層的運算。但是通過不同的操作符函式,i++參加外層運算的是原來i的一個副本。++i參加運算的是它自加後的本身。

17樓:網友

1. 之所以說它是賦值運算子,是因為++相當於做了 i = i + 1 的操作。

先計算str1[i]=str2[j],此時i,j的值還是以前的值,然後 i = i + 1 ,j = j + 1,其目的就是為了把str2的個元素內容依次賦值給str1個元素的內容。

如果是str1[++i]=str2[++j]先是 i = i + 1 ,j = j + 1,此時i,j的值都比以前大1,然後才是str1[i]=str2[j]

18樓:地攤秀子

a++和++a, 前一個先把a用了 然後再給a加一,後一個 先把a自己增加一 然後 再 做運算;

例如:x=5;

y=++x;

x先加到6,然後再將x的值應用到表示式y=x中,y值為6 x,y都為6

x=5;y=x++;

x為6,y為5.

同樣,對於你的陣列也適用!

19樓:網友

i++是後加。

1是先加在運算。

20樓:**的可樂

1. 運算子永遠按照優先順序從高到低進行計算,建議具體問題具體分析。

2. 樓上說法有誤,編譯器自左向右掃描完該等式,不是先計算str1[i]=str2[j],而是先計算等式右邊的表示式「str2[j++]的值,因j++是先取值,後自加,所以等式右邊表示式值為str2[j],此時j值為自加後的值。同理,整個等號表示式的值應為str1[i]=str[j]即str[j],當表示式運算結束時,i和j分別已是自加1以後的值。

另1,++x為先自加後取值,若運算前x=1,整個表示式的值和x均為2。

21樓:匿名使用者

1 自加、自減i++,i--都是運算子; i++ 相當於 i=i+1 但是前者是一個運算子,後者是一個表示式,所以兩者不能等同,只能說功能相當。既然 ++屬於運算子,那麼它就要按照運算子的優先等級來。

2首先要區分 i++ 與++i 前者先用了i 在i自加,後者相反;str1[i++]str2[j++]這個語句中 是先算++在計算str1[i]=str2[j],但是因為i++ 先用了i在i自加,所以看不出區別。如果表示式是。

str1[i++]str2[i++]i=2的話,那麼這個式子等價於 str1[1]=str2[2];

c語言的自加自減運算子

22樓:齊爾大君雅

printf("%d",+i);/9i=9printf("%d",-i);/8i=8printf("%d",i++)8i=9printf("%d",i--)9i=8printf("%d",-i++)8i=9printf("%d",-i--)9i=8前面是輸出值,後面是執行該語句後的i值。-i++應該這樣分,輸出的是-i,執行後i自動加的值始終是正的,最後2個輸出的是-i。

23樓:沐晨長孫振國

第五個:-i

是先把。i輸出,在i=i+1;則i

9;輸出為:

8第六個:i--是先把-i輸出,再i=i-1;則i=8;

輸出為-9;

輸出負數是因前面的。

符號。,而i是正數。

24樓:昌秀榮歷媼

a++和++a,前一個先把a用了。

然後再給a加一,後一個。

先把a自己增加一然後再。

做運算;例如:x=5;

y=++x;

x先加到6,然後再將x的值應用到表示式y=x中,y值為6x,y都為6

x=5;y=x++;

x為6,y為5.

同樣,對於你的陣列也適用!

c語言運算子,C語言 運算子 是怎麼運算的

9除以5商1餘4 不是說小數最後位是餘數 餘數就是在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生餘數,所以餘數問題在小學數學中非常重要。餘數有如下一些重要性質 a,b,c均為自然數 1 餘數小於除數。2 被除數 除數 商 餘數 除數 被除數 餘數 商 商 被除數 餘數 除數。3 ...

有關C 自增運算子的問題,C 中自增運算子前後置的問題

1 首先,m的結果應該是19吧,我執行了程式,確實等於19 2 自增運算子屬於單目運算子,而 則為雙目運算子,單目運算子的優先順序要高於雙目運算子,所以,m i j 運算順序相當於m i j 3 i以i 1之後的i值為此表示式的值,i 則以i為表示式的值 4 m i j m i j 9 10 19 ...

c語言中自加自減運算子前後位置的區別

嗯,自加 自減 從結果上來看都是加1 減1 這點肯定沒錯。但是用在表示式中就會有差別了,拿你的例子來說i 5,如果執行下面的語句 int b i 結果b的值就是5,i的值變為6 如果是b i 那麼b的值就是6,i的值也是6 所以i 與 i使用在表示式中的時候的區別就是 前者是先使用i的當前值進行計算...