本文目錄一覽:
- 1、c語言中:結構體變量能不能進行自增自減運算
- 2、C語言中自加自減只能對變量,那麼像(i+1)++這種在變量中進行了運算的還能不能用自加自減?
- 3、c語言程序問題??自加與自減
- 4、C語言中為什麼常量和表達式不能進行自增自減運算?
- 5、為什麼在輸出的時候在變量後面用自加自減沒用
c語言中:結構體變量能不能進行自增自減運算
你好
對結構體變量進行自增自減運算我想其實是可以的。正常來說,自增自減運算符只能用於普通變量,例如
int
a=1;a++;之後,a值為2,這很簡單,也好理解。如果你想運用到結構體變量,那麼就可能要進行運算符重載了。不知你是否有這個概念,這可能有難於理解,你可以看看關於運算符重載的資料
滿意請採納,謝謝,
祝愉快
C語言中自加自減只能對變量,那麼像(i+1)++這種在變量中進行了運算的還能不能用自加自減?
不能,首先自增自減是單目運算符,必須有變量才能用,你這個 (i+1)並不是變量,因此不能使用.你可以寫成i+2
c語言程序問題??自加與自減
一個整數自身加一可以這樣寫:
a+=1;
它等價於a=a+1;。
但是在C語言中還有一種更簡單的寫法,就是a++;或者++a;。這種寫法叫做自加或自增;意思很明確,就是自身加一。
相應的,也有a–和–a,叫做自減,表示自身減一。
++和–分別稱為自增和自減運算符。
自增和自減的示例:
#include stdio.h
#include stdlib.h
int main()
{
int a = 10, b = 20;
printf(“a=%d, b=%d\n”, a, b);
++a;
–b;
printf(“a=%d, b=%d\n”, a, b);
a++;
b–;
printf(“a=%d, b=%d\n”, a, b);
system(“pause”);
return 0;
}
運行結果:
a=10, b=20
a=11, b=19
a=12, b=18
自增自減完成後,會用新值替換舊值,並將新值保存在當前變量中。自增自減只能針對變量,不能針對數字,例如10++是錯誤
的。
值得注意的是,++ 在變量前面和後面是有區別的:
++ 在前面叫做前自增(例如 ++a)。前自增先進行自增操作,再進行其他操作。
++ 在後面叫做後自增(例如 a++)。後自增先進行其他操作,再進行自增操作。
自減(–)也一樣,有前自減和後自減之分。
請看下面的例子:
#include stdio.h
#include stdlib.h
int main()
{
int a=10, a1=++a;
int b=20, b1=b++;
int c=30, c1=–c;
int d=40, d1=d–;
printf(“a=%d, a1=%d\n”, a, a1);
printf(“b=%d, b1=%d\n”, b, b1);
printf(“c=%d, c1=%d\n”, c, c1);
printf(“d=%d, d1=%d\n”, d, d1);
system(“pause”);
return 0;
}
輸出結果:
a=11, a1=11
b=21, b1=20
c=29, c1=29
d=39, d1=40
a、b、c、d 的輸出結果相信大家沒有疑問,下面重點分析a1、b1、c1、d1:
1) 對於a1=++a,先執行++a,結果為11,再將11賦值給a1,所以a1的最終值為11。而a經過自增,最終的值也為11。
2) 對於b1=b++,b的值並不會立馬加1,而是先把b原來的值交給b1,然後再加1。b原來的值為20,所以b1的值也就為20。而b
經過自增,最終值為21。
3) 對於c1=–c,先執行–c,結果為29,再將29賦值給c1,所以c1的最終值為29。而c經過自減,最終的值也為29。
4) 對於d1=d–,d的值並不會立馬減1,而是先把d原來的值交給d1,然後再減1。d原來的值為40,所以d1的值也就為40。而d經
過自減,最終值為39。
可以看出:a1=++a;會先進行自增操作,再進行賦值操作;而b1=b++;會先進行賦值操作,再進行自增操作。c1=–c;和d1=d–;也
是如此。
C語言中為什麼常量和表達式不能進行自增自減運算?
這是c語言設計之初就規定的,常量不能自動遞增,如果能自動遞增就不叫常量了,就叫變量了。表達式就更不用說了~~
為什麼在輸出的時候在變量後面用自加自減沒用
函數調用的時候,對於大多數c語言編譯器來說,是從左到右計算每個表達式的取值。所以,首先計算最後一個l,等於5.然後計算倒數第二個,是先減1再賦值,於是,倒數第二個–l的表達式取值是4,然後計算倒數第三個表達式l–,這個–在後面,所以是先用l=4這個取值,然後再讓l變為3,所以倒數第三個位置應該顯示4,但是這個表達式計算之後,l變為3了。所以,最後計算倒數第四個表達式,l=3,於是倒數第四位顯示的就是3.綜上所述,最終的結果就是3,4,4,5.
不過這裡要特別說明一下的就是,這道題沒必要深究,因為函數調用的時候,各個表達式求值的順序完全可以是任意的,也就是說,可能一個編譯器是從左到右計算,另一個編譯器可能是從右到左計算。甚至一個編譯器的兩個不同版本在這個計算的順序上都有可能不同。所以你換一個編譯器,有可能得到的結果就完全不同了。
最後再說一點就是,這個從左到右計算順序非常普遍,這個是和函數調用規約,參數壓棧順序,以及編譯器設計者希望編譯器的代碼簡單,至少這樣三個因素綜合決定的。但是不排除某些編譯器設計者,或者某些函數調用規約不同的操作系統上,這個順序就完全不同了。
嗯。。。說的有點多了,你自己再考慮考慮吧,如果學過彙編語言,且知道c語言怎麼編譯成彙編語言的話,你就會對這個問題有更深入的理解。
原創文章,作者:FPLNU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/317846.html