--- title: c/c運算式與運算式 tage: c++程式設計實習 --- # 運算式與運算式 $a+b+7+8+$ 1. 運算式:$+" = / %$ 2. 運算元:$a b‵7‵8‵c$ 3. 運算式:$a b+7+8+c$ :::success 1. 二元運算式:$+‵=‵*‵/‵$%$ 2. 單元運:$++‵--$ ::: # 算術運算式 1. 四側運算式:$+‵-‵*‵/$ 2. <font color='red'>**求餘數運算式:%(只能在整數運算中使用)**</font> - 最重要的運算式 - 有規律或週期性的運算‵2.都會使用此運算子 - 8% 3:除以3的整數為2, 所以計算結果為1 - 9% 3:可以被3整除,所以計算結果為0 - 2% 5:2除以5為0餘2,所以計算結果為2 - <font color='red'>**3,5%3:不合法,編譯會失敗(%只能在整數運算中使用)**</font> 3. 遞增‵遞減運算式:$++‵--$‵ - ++:變數把自己加1$ - --:變數把自己減1$ :::success 前置:先把自己加1或減1 之後再做運算 後置:先做運算 之後再把自己加1或減1 ::: # 關係運算式 :::success 1. <font color='red'>**運算結果只有1(true)或0(false)** </font> ::: 1. 假設i=10, j=20 ![](https://i.imgur.com/7oypgWT.png) :::success 1. <font color='red'>**==是比較兩個運算員是否相同的運算式 2. <font color='red'>**==:是比較兩個運算員是否相同的運算式 3. <font color='red'>**!=:是指定運算子 將右邊的質指定給左邊的變數**</font> ::: # 邏輯運算子 :::success <font color'red'>**運算結果只有1(true 所有非0的數字都可視為true)或0(fales)**</font> ::: 1. <font color='red'>**==&&(及):AND運算 11為1其餘為0**</font> 2. <font color='blue'>**==||(或):or運算 00為0其餘為1**</font> 3. <font color='green'>**==!(反):not運算 0變1 1變0**</font> ![](https://i.imgur.com/VLK044A.png) # 位元運算子 1. 位元向左移:x<<n x左移n個位元 - 先將x轉為2進為 之後從左移n個位元 右邊補n個0 - <font color='red'>**左移1位 等於原來數字第2 所以$x=x<<n即X變為x/2^n$**</font> 3. 反向: ~x 將x做反向 - 先將x轉為2進位 之後每一個位元0變1 1變0 - <font color='red'>**$x=~x x變為~(x+1)$**</font> 4. 及:x \& y y$ - 先將x與y轉為2進位 之後每一個位元1&&1為1 其餘為0 5. 或: $x | y$ - 先將X與Y轉為2進位 之後每一個位元0&&0為0 其餘為1 6. 互斥或(XOR):X^Y - 先將X與Y轉為2進位 之後每一個位元0 XOR 1為1 1XOR0為1 其餘為0 ![](https://i.imgur.com/ghwaAsC.png) + # 指定運算 :::success <font color='red'>等好從右邊運算 運算結果指定給左邊的變數**</font> ::: 1. 等號左邊的變數必須宣告 2. 等號右邊的變數 # 複合運算子 ![](https://i.imgur.com/05yH9RG.png) # 運算子優先順序 1. 結合性:由左向右結合(=由右向左) 範例i=3*5>>1; - 3*5=15$ - $15>>1=7$ - $i=7 2. int i=8/2/2; - $8/2=4$ - $4/2=2$ 3. 範例 cpp=1 j=10; i=j+20*8>>1%6: ‵‵‵ - $20*8=160$ - $1\%6=1\to i=j+160>>1$ - $j+160=170$ - $i=170>>1=85$ # 優先順序表 ![](https://i.imgur.com/dhzH8ZD.png) # 不同型別資料的運算規則 :::success 1. 空間大的可以存放空間小的.小的存放大資料會流失 產生失真 2. int=unsiged=long=unsiged long=float=double=long double ::: # 強制型別轉換 1. 語法1:<Font color='Red'>**(型別)運算式;**</font> 將運算式運算結果轉換成型別的資料型態 2. 語法2:<Font color='Red'>**(型別)運算式;**</font> 將運算式運算結果轉換成型別的資料型態 3. 範例 ```cpp=1 int i=3,j=2 int x=i/j //因為x為 int 所以只能存放整數部分 小數部分全部去除 故x=1 double y=i/j//因為x i與j為 int 所以運算結果為int 只能存放整數部分小數部分 故x=1 double d=(double)i/j;//因為 將i/j運算結果為Double 所以可以存放小數點 顧d=1.5 ``` # 本章程式練習 ```cpp=1 ``` # 自我練習 1. 輸入$3$個整數,輸出它們的平均值,保留$3$位小數。 2. 輸入正整數$n$,輸出$1+2+….+n$的值。 3. 一件衣服$95$元,若消費滿$300$元,打$85$折。輸入購買衣服件數,輸出需要支付的金額。保留$2$位小數。 4. 輸入三角形$3$邊長(均為正整數),判斷能否成為直角三角形。如果可以,輸出$Yes$,如果不行,輸出$No$。如果無法成為三角形,輸出$Not\ a\ Triangle$。 5. 輸入西元年份,判斷是否為閏年。如果是,輸出$Yes$,否則輸出$No$ 。