?? 教學--第七章 運算符、表達式、語句.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://d2school.com/bcyl/bhcpp/newls/ls07.htm -->
<HTML><HEAD><TITLE>教學--第七章 運算符、表達式、語句</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.節標題 {
FONT-WEIGHT: bold; FONT-SIZE: 12pt
}
TD {
FONT-SIZE: 9pt
}
.tdtitle {
FONT-SIZE: 20pt
}
.celltopline {
BORDER-TOP: #000000 1px solid
}
.menucell {
FONT-SIZE: 10pt
}
#glowtext {
FONT-SIZE: 10pt; FILTER: glow(color=red,strength=1); WIDTH: 100%
}
A:link {
FONT: 10pt 宋體; COLOR: blue; TEXT-DECORATION: none
}
A:visited {
FONT: 10pt 宋體; COLOR: purple; TEXT-DECORATION: none
}
A:active {
FONT: 10pt 宋體; COLOR: red; TEXT-DECORATION: underline
}
A:hover {
COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3><!-- 標題 --><!--標題結束 --><A name=頁首></A>
<CENTER>
<TABLE height=154 cellSpacing=4 cellPadding=4 width=760 border=0>
<TBODY>
<TR>
<TD
style="FONT-SIZE: 10pt; MARGIN-LEFT: 12px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; MARGIN-RIGHT: 12px; FONT-FAMILY: 宋體"
width="100%" height=148>
<H2>第七章 運算符、表達式、語句</H2>
<P> </P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1">7.1
算術運算符</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1.1">7.1.1
加減乘除</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1.2">7.1.2
求模運算</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1.3">7.1.3
賦值運算</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1.4">7.1.4
自運算</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.1.5">7.1.5 ++ 和 --
運算</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.2">7.2
算術類型轉換</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.2.1">7.2.1
隱式類型轉換</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.2.2">7.2.2
顯式類型轉換</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.3">7.3
關系運算</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.4">7.4
邏輯運算</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.5">7.5
表達式</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls07.htm#7.6">7.6
語句</A><BR></P>
<P>我們已經學會如何用變量來表達數據,比如我們現在要寫一個《工資管理系統》……我看到很多學員本來昏昏欲睡的眼睛刷地放出了光芒:“老師,我們現在就能寫《工資管理系統》系統了嗎?”</P>
<P>回答:不能,我們剛剛學了點基礎而已。不過,至少我們可以猜想,要寫一個工資管理系統,總得懂得如何表達“工資”這個信息吧?還有像職工的年紀,職工人數等等,都得用C/C++語言來表達,這些我們現在都會啊!</P>
<P>double gongZi; //工資</P>
<P>int nianLin; //年齡</P>
<P>int zhiGongRenShu; //職工人數</P>
<P>看看,上面那些定義變量的代碼,你都看得懂,寫得出的吧?我們還是頗有成就感的。</P>
<P> </P>
<P>本章,我們將學習如何對數據進行運算。</P>
<H3><A name=7.1>7.1</A> 算術運算符</H3>
<H4><A name=7.1.1>7.1.1</A> 加減乘除</H4>
<P>先來學習最基本也最常用的加減乘除等運算。在C++中,加減乘除分別使用字符 '+'、'-'、'*'、'/'作為運算符號。</P>
<P>加、減、乘的操作沒有什么需要特別說明之處,和生活中的相關運算完全一樣,如:</P>
<P>int a = 1 + 2 - 3 * 4;</P>
<P>得到的結果:a等于 -9。當然,乘號使用*表示,這你得記。</P>
<P>除運算除了使用反余杠'/'表示以外,很重要的一點是別忘了,對于整數類型,或字符類型的數據進行除運算時,小數部分將被截掉,因為整型類型的數據不能保存小數部分,如:</P>
<P>int a = 5 / 2;</P>
<P>得到結果:a 等于 2,而不是2.5。</P>
<P>注意:可能大家會以為,之所以 5 /2 結果是2,是因為我們讓一個整型變量a等于它,其實原因并不是因為a是int類型,請看:</P>
<P>float a = 5 / 2;</P>
<P>雖然a現在被聲明為實型,但執行這句程序,a的值仍然是2。事實上,精度丟失是在計算機計算5/2時就發生了。所以,準確的寫法是:</P>
<P> </P>
<P>float a = 5.0 / 2;</P>
<P>或者:</P>
<P>float a = 5 / 2.0;</P>
<P>或者:</P>
<P>float a = 5.0 / 2.0;</P>
<P>也就是說,只有除數或被除數至少需要有一個是明確指定為實型,除運算才能得到小數部分。這里我們也更明確類似于5和5.0在計算機中的區別:雖然數值大小一樣,但加了5.0被當成實型數對待,而5則被當成整型數。</P>
<P> </P>
<H4><A name=7.1.2>7.1.2</A> 求模運算</H4>
<P>除了 + - * / 以外, % 操作也是C++常用的操作符。% 并不是進行“百分比”的運算。在C和C++里,
% 進行求余數運算,求余數也稱“求模”,以下是求余操作的例子:</P>
<P>int a = 5 % 2;</P>
<P>結果是,a 等于 1,即:5 除以2,余數為1。</P>
<P> </P>
<H4><A name=7.1.3>7.1.3</A> 賦值運算</H4>
<P>差點忘了,我們已經很熟悉的等號:= ,C,C++稱為賦值操作。看看例子,是不是很熟悉:</P>
<P>int a = 10;</P>
<P>再如:</P>
<P>int b;</P>
<P>b = a;</P>
<P>或:</P>
<P>int c = 12 * 2;</P>
<P> </P>
<P>在C++中,可以使用連等操作:</P>
<P>int a ,b;</P>
<P>a = b = 100;</P>
<P>結果是,a和b都為100。</P>
<H4><A name=7.1.4>7.1.4</A> 自運算</H4>
<P>先來看一個計算機編程中常有的語句例子:</P>
<P> </P>
<P>int a = 10;</P>
<P>a = a + 1;</P>
<P> </P>
<P>上面的代碼執行后,結果a的值是11。可能不是很理解 a = a + 1;這種運算。</P>
<P>首先可能會認為,a 和 a + 1 怎么會相等呢?這可是個嚴重錯誤,要知道,在C,C++里,'=' 就是表示賦值操作,至于表示左右兩值“相等”
的另有符號。因此,a = a + 1,所完成的工作就是:先計算出 a + 1的值,然后將該值賦給a。</P>
<P>假設我們的存款原為a,現在存入1元,那么新的存款就等于舊存款加上1元錢,用編程語言表達,就是 a = a +1;</P>
<P>在C,C++中,這樣的自加操作可以有另一種表達,并且用這一種表達,計算機的運算速度比較快。</P>
<P>a = a +1;的另一種運算速度較快的表達方法:</P>
<P>a += 1;</P>
<P>+=
被定義為一種新的操作符(因此+和=要連著,中間不能有空格)。它實現的操作就是將其左邊的量在自身的基礎上加上右邊表達式的值。比如:,假設a原來的值為
10,那么:</P>
<P>a += 2;</P>
<P>執行這一句后,a的值為12,即 a = 10 + 2;</P>
<P> </P>
<P>同樣的,減,乘,除,求余都有這種操作符:-= 、 *= 、/=
、%= 等。我們以后學習到的另外一些運算符,也有同樣的這種對應運算。舉一些例子:</P>
<P>假設在分別進行以下操作之前,a原值都為10。</P>
<P>a -= 2; </P>
<P>執行后,a值為8;(a = 10 - 2)</P>
<P> </P>
<P>a *= 2;</P>
<P>執行后,a值為20;(a = 10 * 2) </P>
<P> </P>
<P>a /= 2;</P>
<P>執行后,a值為5;(a = 10 / 2)</P>
<P> </P>
<P>a %= 2;</P>
<P>執行后,a值為0; (a = 10 % 2)</P>
<P> </P>
<P>C,C++提供這些操作符,目的僅僅是為了提高相應操作的運算速度。為什么 a += 2;會比 a = a +
2;運算得快呢?從編譯的角度上看,是因為前者可以生成更短小的匯編代碼。</P>
<P>C,C++提供這些別的語言沒有的操作符,可以供我們寫出優化的代碼。</P>
<P>在某些特殊情況下,優化還可以繼續。請看下一小節。</P>
<H4><A name=7.1.5>7.1.5</A> ++ 和 -- 運算</H4>
<P>當運算是自加或自減1的時候,C,C++提供了更為優化的運算操作符:++,--。</P>
<P>設整型變量 a,原值為 10。我們已經知道,要實現對其加1,可以有以下兩種寫法:</P>
<P>方法1: a = a +1;</P>
<P>方法2: a += 1;</P>
<P>我們還知道方法2比方法1好。現在還有方法3,并且是最好的方法。</P>
<P>++a,或者:a++;</P>
<P>也就是說,在只自加1的情況下,代碼 a++ 或 ++a 可以生成最優化的匯編代碼。</P>
<P> </P>
<P>同樣,自減1操作也有對應的操作符:--a 或 a--;</P>
<P>設a原值為10,則執行 --a 或者 a--后,a的值都為9。</P>
<P> </P>
<P>現在來談談 ++a 和 a++ 有什么區別。</P>
<P>在C,C++語言里,++a 和 --a 稱為前置運算(prefix),而 a++ 和 a--稱為后置運算(postfix)。</P>
<P>如果僅僅是進行前置工或后置運算,那么結果是相同的,這我們已經在前面談過,我們以++為例:設a為10,則無論是 ++a 或
a++,執行結果都是讓a遞增1,成為11。</P>
<P>但在有其它運算的復雜表達式中,前置++運算過程是:先加1,然后將<B>已加1</B>的變量參以其它運算。后置++的運算過程是:先用<B>未加1</B>的變量參以其它運算,然后再將該變量加1。</P>
<P>聽起來有些繞,我們舉些例子看,還是變量a,原來值為10:</P>
<P>例子1:</P>
<P>int b = ++a; //前置++</P>
<P>運算結果:a的值為11,b的值也為11。</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -