close

#@#運算子和運算式#@#

        運算式是由運算元(operand)和運算子(operator)所組成;運算元可以是常數、變數甚至是函數,而運算子就數學上的運算符號,如「+」、「-」、「*」、「/」等。

        b*14;

        如上,其中b14為運算元,「*」為運算子,而整行即是運算式。運算子除了運算符號外,還有設定運算子,如果像讓變數在記憶體中儲存某個值時,可以使用設定運算子「=」。

設定運算子

意義

=

設定

 

01          //Prog4_1 設定運算子

02          #include<iostream>

03          using namespace std;

04          int main(void)

05          {

06            int num=14; // 宣告整數變數num,並設值為14

07            cout<<”Before compute, num= ”<<num<<endl; // 印出num的值

08            num=num+1;

09            cout<<”After compute, num= ”<<num<<endl; // 印出計算後num的值

10            system(“pause”);

11            return 0;

12          }

若把第六行的「=」看成數學上的「等於」的話,則此程式根本行不通。所以要把它看成指定「把14指定給num這個變數」。

#@#算術運算子#@#

 

01          //Prog4_2 算術運算子

02          #include<iostream>

03          using namespace std;

04          int main(void)

05          {

06            int num=15;

07            cout<<”Before compute, num= ”<<num<<endl;

08            num=num+1;

09            cout<<”After compute, num= ”<<num<<endl;

10            num=num-1;

11            cout<<”After compute, num= ”<<num<<endl;

 

12            num=num*2;

13            cout<<”After compute, num= ”<<num<<endl;

14            num=num/2;

15            cout<<”After compute, num= ”<<num<<endl;

16            num=num%2;

17            cout<<”After compute, num= ”<<num<<endl;

18            system(“pause”);

19            return 0;

20          }

算數運算子

意義

+

加法

-

減法

*

乘法

/

除法

%

取餘數

加法運算子「+:會將出現在它前後的兩個運算元相加。如下,先把num的值加1,再把這個值設定給num。此處也可以改成「num+1(去掉前面的num=),或是「num++(這只在表示+1)

num=num+1;

【註解】「num++」只表示「num+1」。而且沒有「num+++」,這在程式碼中是不被允許的。他只是給使用者在+1時的一個方便,其實往後會用到很多+1的程式。

減法運算子「-:會將出現在它前面的運算元減掉後面的運算元。如下,先把num的值減1,再把這個值設定給num。此處也可以改成「num+1(去掉前面的num=),或是「num--(這只在表示-1)

        num=num-1;

乘法運算子「*:會將出現在前後的兩個運算元相乘。如下,先把num的值乘2,再把這個值設定給num。或直接寫「num*2(去掉前面的num=)

        num=num*2;

除法運算子「/:會將出現在它前面的運算元除於後面的運算元。如下,先把num的值除2,再把這個值設定給num。此處也可以改成「num/2(去掉前面的num=)

        num=num/2;

餘數運算子「%:會將出現在它前面的運算元除以後面的運算元,在取其所得到的餘數。此處也可以改成「num%2(去掉前面的num=)

        num=num%2;

變數型態 變數名稱;

【註解】除法時,若不是整除,程式會以無條件捨去法至整數位呈現。

【註解】程式在運算時,能遵守先乘除後加減,所以可以在適當的時機加上「( )」來指定特定的範圍。

#@#if敘述#@#

 

01          //Prog4_3 if敘述

02          #include<iostream>

03          using namespace std;

04          int main(void)

05          {

06            int i;

07            cout<<”Input an integer:”;

08            cin>>i;

09            if(i>0) cout<<i<<” is a number over zero.”<<endl; // 判斷i的正負

10            else if(i==0) cout<<i<<” is a number of zero.”

11            else cout<<i<<” is not a number over zero.”<<endl;

12            system(“pause”);

13            return 0;

14          }

        if敘述中常會被使用到關係運算子,「if」在英文中是「假如」的意思,所以這個敘述可以被看成「假如」。先來看看if敘述。

        if(條件判斷){

                敘述;

       }       

        如果括號中的條件判斷成立,就會執行後面的敘述,若是條件判斷不成立,則後面敘述判斷就不會被執行。同樣的,若敘述只有一行,可以省去大括號「{}」。若是和想加上條件判斷可用「else if」和「else」。

        if(條件判斷){

                敘述;

     }      

        else if(條件判斷){

               敘述;

        }

        else{

                敘述;

 

}

        在撰寫if敘述時,可能會用到很多的範圍,則需再加上「else if」。如Prog4_3的第九~十一行。第九行的範圍是「>0」,第十行則是「=0」的範圍,而剩下的範圍應該是「<0」的範圍,這時就可以使用「else」去含括剩下的範圍,不用在寫「else if(i<0)」,當然學弟要寫,學長也不會反對。

#@#關係運算子#@#

 

01          //Prog4_4 關係運算子

02          #include<iostream>

03          using namespace std;

04          int main(void)

05          {

06            int i;

07            cout<<”Input an interger:”;

08            cin>>i;

09            if(i>5) cout<<i<<”>5成立”<<endl; //判斷i>5是否成立,印出字串

10            else cout<<i<<”>5不成立”<<endl;

11            if(i%2==0) cout<<i<<”為偶數”<<endl; //判斷i是否為偶數,印出字串

12            else cout<<i<<”>5不成立”<<endl;

13            if(true) cout<<”此行永遠會被執行”<<endl; // 判斷true是否成立

14            system(“pause”);

15            return 0;

16          }

關係運算子

意義

例題(a=18,b=4)

是否成立

大於

a>b

True

小於

a<b

False

>=

大於等於

a>=b

True

<=

小於等於

a<=b

False

==

等於

a==b

False

!=

不等於

a!=b

True

【註解】關係運算子中的「==」即是數學上的「等於」,所以在表示等於時,則用兩個等於「==」。像剛剛的指定運算子「=」則是表示指定,只使用一個等於「=」。

        接下來介紹算數與設定運算子的結合。

運算子

例題

說明

意義

+=

a+=b

a+b的值存放到a

a=a+b

-=

a-=b

a-b的值存放到a

a=a-b

*=

a*=b

a*b的值存放到a

a=a*b

/=

a/=b

a/b的值存放到a

a=a/b

%=

a%=b

a%b的值存放到a

a=a%b

 

#@#遞增運算子#@#

 

01          // Prog4_6 遞增運算子

02          #include<iostream>

03          using namespace std;

04          int main()

05          {

06            int a=10;

07            cout<<”a=”<<a<<endl;

08            cout<<”a++*2=”<<(a++*2)<<endl;

09            cout<<”a=”<<a<<endl;

10            cout<<”++a*2”=<<(++a*2)<<endl;

11            system(“pause”);

12            return 0;

13          }

遞增與遞減運算子具有相當大的便利性,它們可以簡潔程式碼。善用遞增與遞減運算子可提高程式個可讀性。例如,於程式中宣告一個整數變數i,於程式執行中想讓它加上1,程式的敘述如下:

        i=i+1;

i的值加1後再設定給i存放。此時也可以利用遞增運算子「++」寫出簡潔的敘述,這兩個敘述的意義是相同的:

        i++;

        此外,還有另ㄧ種遞增運算子++的用法,就是遞增運算子++在變數前面,如++i,這和i++所代表的意義是不一樣的。i++會先執行整個敘述在將i的值加1,而++i則先把i的值加1後,在執行整個敘述,如Prog4_6:

cout<<”a++*2=”<<(a++*2)<<endl;

a的值為10,程式會先執行a*2,然後輸出,再加1。而第十行。

cout<<”++a*2”=<<(++a*2)<<endl;

a的值為11,程式會先執行a++,然後乘2,再輸出。

#@#邏輯運算子#@#(Prog4_7)

if敘述中常會用到邏輯運算子,如果if敘述中的判斷條件不只一個時,即會使用到邏輯運算子。AND運算子是指其前後兩式都需成立,敘述才能成立。OR運算子則只要其前後兩式中一式成立,則敘述即成立。

邏輯運算子

意義

例題(a=4,b=2,c=4)

是否成立

&&

AND,

a==b && a==c

False

||

OR,

a==b || a==c

True

【註解】有些鍵盤上很像沒有直接標示「|」,這個鍵和「\」是同一個鍵,在鍵盤上換標示沒有連起來,但是打入程式中,它會成一直線。(記得要打兩次)

#@#運算式與資料型的轉換#@#

運算式與資料型態在定義、宣告就已經決定其型態,因此不能隨意轉換成其他的資料型態,但C++容許使用者有限度的作型態轉換處理。運算式與資料型態的轉換可分為「隱性資料型態轉換」及「顯性資料型態轉換」兩種。

 

隱性資料型態轉換:在程式中已經定義好的資料型態之變數,若是想以另一種型態表示的話,C++會依據下例的規則自動做資料型態轉換。

(1)   轉換前的資料型態與轉換後的型態相容。

(2)   轉換後的資料型態之表示範圍比轉換前的型態大。

隱性資料型態轉換只限該行敘述,並不會影響原先變數的型態定義,而且透過隱性資料型態轉換,可以保證資料的精確度,不會因為轉換而損失資料內容。

 

01          // Prog4_8 隱性資料型態轉換

02          #include<iostream>

03          using namespace std;

04          int main()

05          {

06            int a=45;

07            float b=2.3;

08            cout<<"a="<<a<<", b="<<b<<endl; // 印出a,b的值

09            cout<<"a/b="<<a/b<<endl; // 印出a/b的值

10            system("pause");

11            return 0;

12          }

由執行的結果可以看到,當兩個數中只有一個為浮點數時,其運算的結果會直接轉換為浮點數。當運算式中變數的型態不同時,C++會自動以較少的表示範圍轉換成較大的表示範圍後,再做運算。

隱性資料型態轉換:當我們做兩個整數的運算時,其運算結果也會是整數。舉例來說,做整數除法8/3的運算,其結果為整數2,並不是實際的2.66666…,因此C++中若是想要得到計算的結果是浮點數,就必須將資料做顯性資料型態轉換。

        (欲轉換的資料型態) 變數名稱;

這種顯性資料型態的轉換,因為是直接撰寫在程式碼中,所以也稱為強制型態轉換。當兩個整數相除時,小數點以後的數會被截斷(無條件捨去法),使得運算的結果保持整數。但由於這並不是預期的結果,因此想要得到運算的結果為浮點數,就必須將兩個整數中的其中一個(或是兩個)強制轉換型態為浮點數。 

01          // Prog4_9 顯性資料型態轉換

02          #include<iostream>

03          using namespace std;

04          int main()

05          {

06            int a=36,b=7;

07            cout<<"a="<<a<<", b="<<b<<endl; //印出a,b的值 

08            cout<<"a/b="<<(a/b)<<endl; // 印出a/b的值

09            cout<<"a="<<a<<", b="<<b<<endl; //印出a,b的值

10            cout<<"a/b="<<(float)a/b<<endl; // 印出(float)a/b的值

11            system("pause");

12            return 0;

13          }

 

arrow
arrow
    全站熱搜

    FlyingDC 發表在 痞客邦 留言(0) 人氣()