好啦,繼續上次的内容,我們來先說下條件運算符。
這是一個三目運算符,貌似也是c++唯一一個這樣的運算符,不過它其實很簡單。
表達式如下:
Expr1 ? Expr2 : Expr3
意思就是如果Expr1是真,那麼傳回Expr2,否賊傳回Expr3。
例如:
int a=10;
int b=a<3 ? 3 : a; //a<3不成立,是以取a,是以b=a
逗号表達式:
(exp1,exp2)
其求職過程是分别求2個表達式的值,并以表達式2的值作為整個逗号表達式的值。
例如:
#include <iostream>
using namespace std;
void main()
{
int a=2,b=4,c=6,x,y;
y=((x=a+b),b+c);
cout<<y<<endl;
cout<<x<<endl;
}
結果為y是10,x是6
需要注意的是:
1. 逗号表達式可以是一般形式中的表達式1和表達式2,也可以是逗号表達式。例如以下嵌套關系:
表達式1,(表達式2,表達式3) 是以可以把逗号表達式擴充為:
表達式1,表達式2,表達式3
2. 在程式中使用逗号表達式,通常為了求逗号表達式的各個值
3. 不是所有的逗号的地方都是逗号表達式,是以要注意區分
求位元組數運算符:sizeod(exp1)
剛開始看的時候,大家可能都認為這是個函數,但是還是要記住它不是。exp1可以是變量,也可以是某種資料類型的名稱
下面來看個很重要的問題,就是運算符的優先級問題,優先級高的先于優先級低的進行運算,如果在一個運算中的優先級相同,則按運算符的結合性所規定的結合方向處理
優先級 | 運算符 | 結合性 |
1 | () [] -> . :: ++(後置) --(後置) | 左à右 |
2 | ! ~ ++(前置) --(前置) + * &(強轉) sizeof new delete | 左à右 |
3 | . -> | 右à左 |
4 | / % * | 左à右 |
5 | + - | 左à右 |
6 | << >> | 左à右 |
7 | <= < > >= | 左à右 |
8 | == != | 左à右 |
9 | & | 左à右 |
10 | ^ | 左à右 |
11 | | | 左à右 |
12 | && | 左à右 |
13 | || | 左à右 |
14 | ?: | 右à左 |
15 | = *= /= += -= |= <<= >>= | 左à右 |
16 | , | 左à右 |
說到強轉,來說下類型轉換
C++提供了2中轉化機制:一是自動轉換,二是強制轉換。
自動轉換發生在不同資料類型的量混合元算時,由編譯器自動完成。轉換規則是小類型總是被提升成大類型。以防止精度丢失。
強制轉換是通過類型轉換運算來實作的:一般形式如下:
(類型說明符)表達式 (float) a
關于類型轉換我們以後還會說到
下面我們開始接觸語句了。
什麼是語句,它由由變量聲明和表達式構成,将特定的關鍵和文法,按一定的功能組織起來的語句。
; //這是一個最簡單的語句,空語句
float a=1.0f; //聲明語句
當然語句不是隻有這樣,大部分我們會使用複合語句
那麼我們先來看看條件語句,顧名思義,就是滿足條件才執行的語句喽
條件語句的基本形式:
If(表達式1)
語句1 ;
或者
If(表達式1)
{
語句1 ;
}
我們可以了解為:如果表達式1是真的,那麼執行語句1,否則不執行語句1
我建議大家最好都用第二種,有大括号包着,看着比較清晰明白
先來看個簡單的例子:
#include <iostream>
using namespace std;
void main()
{
int a=2,b=4;
if (a<b)
{
cout<<"a<b"<<endl;
}
if (a>b)
{
cout<<"a>b"<<endl;
}
}
a是2,b是4,a自然小于b,是以a<b為真,就輸出了a<b。a>b不滿足,是以自然不會進入cout<<”a>b”<<endl
條件語句的其他形式
if-else形式:
if(表達式)
語句1;
else
語句2;
我們可以了解為:如果表達式是真的,那麼執行語句1,否則執行語句2.
那麼我可以把上面那個例子改下變成:
if (a<b)
{
cout<<"a<b"<<endl;
}else
{
cout<<"a>b"<<endl;
}
結果是一樣的
由if-else繼續引出的就是if-elseif-else,它的表達式是:
if(表達式1)
語句1;
else if(表達式2)
語句2;
…
else
語句n;
我們可以了解為:如果表達式1為真,那麼執行語句1,如果表達式2為真,那麼執行語句2,……,都不滿足的時候,執行語句n。
例如我們把之前例子加個等于的判斷:
#include <iostream>
using namespace std;
void main()
{
int a=2,b=4;
if (a<b)
{
cout<<"a<b"<<endl;
}
else if(a==b)
{
cout<<"a==b"<<endl;
}
else
{
cout<<"a>b"<<endl;
}
}
條件語句的基本形式就是這樣的,但是不僅僅限于此,嵌套式的條件語句用處更加廣泛。
所謂嵌套式if的語句,就是if語句中,執行語句還是if。
我們繼續拿之前的例子修改下,看下什麼是嵌套式的if語句
#include <iostream>
using namespace std;
void main()
{
int a=2,b=4;
if(a!=b)
{
if (a<b)
{
cout<<"a<b"<<endl;
}
else
{
cout<<"a>b"<<endl;
}
}
else
{
cout<<"a==b"<<endl;
}
}
再來看看另一個條件語句switch語句
Switch語句的表達式:
switch (表達式)
{
case 常量表達式1 :
語句1;
break;
case常量表達式2:
語句2;
break;
default :
語句n;
break;
}
我們可以了解為:表達式的值與之後的常量表達式1,2…n直到都不滿足的default進行比較,如果表達式的值與某個常量表達式的值相等,就執行對應的語句。
例如:
#include <iostream>
using namespace std;
void main()
{
int a=2;
switch(a)
{
case 1:
cout<<"1"<<endl;
case 2:
cout<<"2"<<endl;
case 3:
cout<<"3"<<endl;
default:
cout<<"不是1,2,3"<<endl;
}
}
我們執行一下:
結果是
2
3
不是1,2,3
為什麼會這樣,我們想要的就是2這個結果,仔細觀察下就會發現,我們這裡沒寫break;
這個在初期學習的過程中經常出現的問題,是以要注意哦。
是以在每一個條件後面都要加上break;
修改後:
#include <iostream>
using namespace std;
void main()
{
int a=2;
switch(a)
{
case 1:
cout<<"1"<<endl;
break;
case 2:
cout<<"2"<<endl;
break;
case 3:
cout<<"3"<<endl;
break;
default:
cout<<"不是,2,3"<<endl;
break;
}
}
這樣就沒問題了
個人網站http://www.ravedonut.com/
轉載于:https://www.cnblogs.com/panjiangfy/archive/2011/08/01/cxuexi5.html