菜鳥的C#學習之旅——算數運算子
內容提示
-
佔位符
-
隱式轉換
-
顯示轉換
-
轉義符
-
型別轉換
-
加加減減
-
接收使用者輸入的內容
-
總結
一、佔位符
- 定義:顧名思義,佔位符就是先佔住一個固定的位置,等著你再往裡面新增內容的符號
- 舉例:Console.WriteLine("{0}秒中是{1}天{2}小時{3}分鐘{4}秒",second ,day ,h ,min ,mod );
- 具體分解:Console.WriteLine("{0},{1}.......","匹配0","匹配1"),其中,{0},{1}就是字串中的佔位符,先站下位置
- 其他重點佔位符:
static void Main() { int i=12345; Console.WriteLine("{0:C}",i); //貨幣 Console.WriteLine("{0:D}",i); //十進位制數 Console.WriteLine("{0:E}",i); //科學技術法 Console.WriteLine("{0:F}",i); // 浮點數表示法 Console.WriteLine("{0:G}",i); //G或g General 常用格式 Console.WriteLine("{0:N}",i); //N或n 用逗號分割千位的數字 }
二、隱式轉換
- 隱式轉換:即資料的型別的轉換由編譯器自動進行的,不需要人工干預的資料轉換。
- 舉例:int型別的資料可以隱式的轉換為double型別的資料
double d = 5; int a = d; Console.WriteLine(a ); Console.ReadKey(); int a = 5;//可以執行 double d = a; Console.WriteLine(d); Console.ReadKey();
- 分析原因:在賦值運算中,賦值號兩邊量的資料型別不同時,賦值號右邊量的型別將轉換為左邊量的型別。如果右邊量的資料型別長度比左邊長時,將丟失一部分資料,這樣會降低精度,丟失的部分按四捨五入向前舍入。
- 理解:往銀行存錢如果少一個小數點將是一件多麼不敢想象的事情。
三、顯示轉換
1.顯示轉換:與隱式轉換相反的資料型別的轉換,即需要人為強制干預的資料轉換。
2.程式碼展示:
例如,(int)5.5的結果是5;強制型別轉換的目的是使表示式的值的資料型別發生改變,從而使不同型別資料之間的運算能夠進行下去。
double d = 5.5;
int a = (int ) d;
Console.WriteLine(d );
Console.ReadKey();
3.用於強行將“表示式”的值轉換成“型別名”所表示的資料型別。
四、轉義符
1.一種特殊的字元常量;以反斜線"\"開頭,後跟一個或幾個字元。具有特定的含義,不同於字元原有的意義,故稱“轉義”字元。主要用來表示那些用一般字元不便於表示的控制程式碼。 它的作用是消除緊隨其後的字元的原有含義,用一些普通字元的組合來代替一些特殊字元,由於其組合改變了原來字元表示的含義,因此稱為“轉義”; 用可以看見的字元表示那不可以看見的字元, 如'\n'表示換行。
2.常見的轉義符及其含義:
\’ 單引號
\” 雙引號
\\ 反斜槓
\0 空
\a 警告(產生峰鳴)
\b 退格
\f 換頁
\n 換行
\r 回車
\t 水平製表符
\v 垂直製表符
五、型別轉換
1. Convert.ToInt32
該方式不僅可以將字串型別轉換為int,還可以將其他的型別轉換為int。
2.具體例子:
static void Main(string[] args)
{
//讓使用者輸入姓名 語文 數學 英語 三門課的成績,
//然後給使用者顯示:XX,你的總成績為XX分,平均成績為XX分
Console.WriteLine("請輸入姓名");
string name = Console.ReadLine();
Console.WriteLine("請輸入語文成績");
string strChinese = Console.ReadLine();
Console.WriteLine("請輸入數學成績");
string strMath = Console.ReadLine();
Console.WriteLine("請輸入英語成績");
string strEnglish = Console.ReadLine();
double chinese = Convert.ToDouble(strChinese);//把字串型別的語文成績轉換為double型別的資料
double math = Convert.ToDouble(strMath);
double english = Convert.ToDouble(strEnglish);
double sum = chinese + math + english;//計算總成績
double avg = sum / 3;
Console.WriteLine("{0}你好,你的總成績為{1},平均成績為{2:0.0}", name, sum, avg);
Console.WriteLine("{0:0.0}", 34.555);
Console.ReadKey();
}
輸出結果:
運用到的知識點:
(1)接收使用者的輸入;
(2)將使用者輸入的內容進行轉換;
(3)轉換的目的是為了更好的運算,使其前後保持一致;
(4)當然還用到了佔位符。
六、加加減減
下面同過四個小例子展示,逐步分析他們之間的區別:(看完小例子後將非常的清楚的分清楚各個之間的關係)
總結:前加/前減 都是先在自身的基礎上加1/減1;後加/後減 都是先取原值參與運算 然後再加上1/減去1.
加加減減————分為前加和後加
後加:
int num=10;
int number = 10 + num++;//先去原值 參與運算 最後再加上1
Console.WriteLine(number);//number=20
Console.WriteLine(num );//num=11
Console.ReadKey();
前加:
int num = 10;
int number = 10 + ++num;//先自身加1 然後再參與運算
Console.WriteLine(number);//number=21
Console.WriteLine(num);//num=11
Console.ReadKey();
前減
int num = 10;
int number = 10 + --num;//先自身減1 然後再參與運算
Console.WriteLine(number);//number=19
Console.WriteLine(num);//num=9
Console.ReadKey();
後減
int num = 10;
int number = 10 + num--;//先取原值參與運算,再自身減1
Console.WriteLine(number);//number=20
Console.WriteLine(num);//num=9
Console.ReadKey();
七、接收使用者輸入的內容
例項:(該例項使用者可以隨意的輸入你想要計算的秒數)
優點:沒把程式碼寫死,使用者可以根據自己想要的方式和數字輸入,非常的靈活。
難點:在於型別的轉換上。
Console.WriteLine("請輸入秒數:");
int second = Convert.ToInt32(Console .ReadLine ());
int day = second / (60 * 60 * 24);//得到的天數
int sec = second % (60 * 60 * 24);//剩餘的秒數
int h = sec / (60 * 60);//得到小時數
sec = sec % (60 * 60);//變數的重新賦值,再次得到餘數的秒數
int min = sec / 60;//得到分鐘數
int mod = sec % 60;//最後的秒數
Console.WriteLine("{0}秒中是{1}天{2}小時{3}分鐘{4}秒",second ,day ,h ,min ,mod );
Console.ReadLine();
}
八、總結
其實學習的時候光看視訊感覺很多都會了,每當自己用到的時候,才知道原來理解上的一點點小小的瑕疵都將是致命的,所以,學習要建立在實踐的基礎上,多多的理解,一定要理解透,否則將會很可怕。當然我們每天積累一點點,這個也是可怕的,哈哈哈。還望各位大神的指點。