Ⅰ 什麼是C語言中關於自加自減
自增分前綴自增和後綴自增。無論是什麼,執行自增都有1個副作用,就是原來變數的值會增加1。例如int a=1;a++;或int a=1;++a;執行後,a==2。
而他們的區別就在於整個自增表達式的值不同。如(a++)的值是變數a自增以前的值,如上面例子,(a++)==1。而(++a)的值則是變數a自增以後的值,即(++a)==1+1==2。
結合性分為左結合和右結合,只有優先順序相同時才看結合性,例如表達式a+b*c+d-e*f,因為乘法優先順序別高於加減,所以a+(b*c)+d-(e*f),又因+-運算是左結合,所以只a+(b*c)再(a+(b*c))+d再(a+(b*c)+d)-(e*f),假如是右結合,就先d-(e*f),也就反過來了。這里其實看不出有什麼區別,怎麼樣結果都一樣。
但看到*p++運算就不同了,因為*與++運算同一優先順序,左結合結果就是(*p)++,右結合就是*(p++),這是區別很大的,書上還很多例子,你可以自己去看的。
強制轉換問題就是在可以轉換的情況下按要求轉換。如float x=9.9;
則(int)x==9。將實型轉為整型是採用截掉小數部分的做法。
例如還可以整型轉字元常量等等,例如,int a=97;則(char)a=='a',因為字元a的ASCLL碼為97。
()裡面即是你要轉換的類型。
Ⅱ 編程中%怎麼用
在C++中//是行注釋的意思。
程序的注釋是解釋性語句,您可以在 C++ 代碼中包含注釋,這將提高源代碼的可讀性。所有的編程語言都允許某種形式的注釋。
C++ 支持單行注釋和多行注釋。注釋中的所有字元會被 C++ 編譯器忽略。
C++中注釋的種類:
1、單行注釋:以雙斜線(//)開始,以換行符結束。當前雙斜線右側的所有內容都會被編譯器忽略。
2、界定符對注釋:以/*開始,以*/結束,可以包含出*/外的任意內容,包括換行符。當注釋界定符跨越多行時,最好能顯式指出其內部的程序行都屬於多行注釋的一部分。
C++所採用的風格是,注釋內的每行都以一個星號開頭,從而指出整個范圍都是多行注釋的一部分。
(2)編程范圍自加自減擴展閱讀
編程符號種類:
1、算術運算符
用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。
2、關系運算符
用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
3、邏輯運算符
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4、位操作運算符
參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5、賦值運算符
用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6、條件運算符
這是一個三目運算符,用於條件求值(?:)。
7、逗號運算符
用於把若干表達式組合成一個表達式(,)。
8、指針運算符
用於取內容(*)和取地址(&)二種運算。
9、求位元組數運算符
用於計算數據類型所佔的位元組數(sizeof)。
10、特殊運算符
有括弧(),下標[],成員(→,.)等幾種。
Ⅲ 求問編程中自增自減運算符的運算規則
首先聲明不同的編譯器對於++運算的結果差異性很大,下面的解釋僅僅針對你用的VC6.0;
1. 教科書上明確解釋:++在前,則是先運算自加;++在後在在運行完當前運算後再進行自加;
2.你的第一個程序其中a=x+(x++)+(++x)可以分解為:
先執行a=x+x,此刻a=5+5=10
再執行x=x+1=6
然後執行a=10+x=10+6=16
然後自行x=x+1=7
3. 你的第二個程序中x=x+(x++)+(++x)可以分解為:
先執行x=x+x=5+5=10,但請注意,此時並沒有真的賦值給x=10,因為當前主運算沒有結束
然後執行x=x+1=6
然後執行x=10+x=10+6=16;請注意,當前運算結束,16被賦值給x,此刻x=16
然後執行++x,級x=x+1=16+1=17
再次聲明,不同的編譯器結果不同,我曾經驗證過,例如在Tc2.0中a=x+(x++)+(++x)是這樣解釋的:
先執行++x,此時x=x+1=5+1=6
然後執行a=x+x+x=6+6+6=18
然後執行x++,此時x=7
這種東西理解一次就足夠了,工作後基本不會用這種方式來寫的,在學校里考這些東西,現實意義非常小。
Ⅳ 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--;也
是如此。
Ⅳ 編程中關於自加自減得函數
int i=8;
cout<<i++<<endl; //++後綴,先取值再自增,i++=8,i=9
cout<<i--<<endl;//i--同上,先取值再自減,i--=9,i=8
cout<<++i<<endl;//++前綴,先自增再取值++i=9,i=9
cout<<--i<<endl;//--前綴,先自減再取值--i=8,i=8
cout<<-i++<<endl;//自增自減優先順序高於負號的,所以,i++=8,i=9,-i++=-8
cout<<-i--<<endl;//i--=-9,-i--=-9
Ⅵ C語言的自加自減到底從函數哪裡開始,從哪裡結束
我們一行一行分析:
for (x = 5; x > 0; x--) //從x=5開始,當x>0的值為false時停止循環。每次循環後x自減。
if (x-- < 5) printf("%d", x); //x--的值就等於x,也就是說第一次是不執行的。這個語句同時也會將x自減。
else printf("%d", x++); //x++的值也等於x,但同時也會將x自增。第一次會執行這個語句,輸出為x-1(等於4),因為在判斷語句中x自減了。
所以,第一輪輸出為4。
第二輪,x因為for循環自減了,此時x-- < 5也已滿足,又因為在上一輪循環中加1,因此輸出4+1-1-1=2;
第三輪與第二輪相似,不同之處在於沒有執行printf("%d", x++),因此x的值減2,輸出1
Ⅶ c語言程序設計 編程題:自增自減運算 和後置。
不知道你C語言怎麼樣。。我想應該不是很好吧。 所以先解釋下自增自減運算符的意思,——(++)變數前表示變數先減1(+1)在使用變數的值。若運算符在變數後則表示先使用變數,然後變數再加1。。。下面舉個例子
#include〈stdio.h〉
main()
{
int a=5;
printf(「%d」,a——,a++,——a,++a)}
Ⅷ C語言中自增自減的簡單問題
第一題中間應該多了個加號,修改過後的運行結果如圖。
然後第一題的++a是每一次都先加1,然後計算,而a++是計算完成之後才加一。
所以第一題其實是4+4=8;
第二題是3+5=8;
然後a都是加了2次,都是5.
Ⅸ c語言關於自增自減運算的問題
你看這個代碼。先求的p結果是14 , 按我們算應該是13,但編譯器是在編譯過程中認為()裡面的優先順序的相同的,而且都是先自增,所以編譯器就把先把這兩個自增計算了,然後就是7+7了。
而下面是一樣的,前二個也是同時進行。後面才進行也就是7+7+8,最後為22. (我以前也問過,老師用編譯後的匯編代碼給我解釋的)
Ⅹ 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
另外自增 、自減 、還可能和編譯器有關系 。
(10)編程范圍自加自減擴展閱讀:
後綴表達式 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後新增。