C#表達式和運算符詳細解析
類型轉換
Convert.To類型()
1、表達式
將變量和字面值(在使用運算符時,他們都稱作操作數)與運算符組合起來就得到瞭表達式,它是計算的基本構建
簡單的操作包括所有的基本書序操作,如加減乘除;還有專門用於處理佈爾值的邏輯運算以及賦值運算。
比如表達式:c=a+b
讓用戶輸入他的語文和數學成績,計算他的總成績
using System; namespace 表達式 { class Program { static void Main(string[] args) { int a = 5; int b = 10; int c = a + b; Console.WriteLine(c); Console.WriteLine("請輸入你的語文成績"); double chinese = Convert.ToDouble( Console.ReadLine()); //接收用戶輸入(字符串),並轉換成Dobule類型 Console.WriteLine("請輸入你的數學成績"); double math = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("您的總成績是{0},平均成績是{1}", chinese+math, (math+chinese)/2); // 字符串連接方式可以用“+” Console.ReadKey(); } } }
1.2 運算符分類
按操作數的個數
- 一元運算符:處理一個操作數(int a=10)
- 二元運算符:處理兩個操作數 a>b
- 三元運算符:處理三個操作數 (?:
按運算類型:
- 數學運算符
- 賦值運算符
- 關系運算符
- 佈爾原酸符
- 位運算符 (按為取反)
- 其他運算符(is as)
- var1=var2++ :先用後加,var1等於var2,var2的值加1
- var1=++var2:先加後用(va2=)
2、數學運算符
- var2=10
- var1=var2++ 先用後加(var1=var2=10, var2的值加一(var2=10+1))
- var1=++var2 先加後用 (var2加一(var2=10+1),var1等於var2+1)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 數學運算符 { class Program { static void Main(string[] args) { int a = 5; int b = 3; int c = a / b; double d = a / b; double e = 5.0; double f = 3.0; double g = e / f; Console.WriteLine("c的值是{0},d的值是{1},g的值是{2}", c, d,g); Console.ReadKey(); } } }
結果:c的值是1,d的值是1,g的值是1.66666666666667
++/–
3、賦值運算符
4、關系運算符
5、佈爾運算符
註:&&/||與&/|區別:&&/||可用於對數值執行操作,實際上,他們處理的是在儲存在變量中的一系列位而不是變量的值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 佈爾運算符 { class Program { static void Main(string[] args) { //&與運算符,||或運算符,!取反操作符,^異或運算符 int a = 10; int b = 15; Console.WriteLine((10==a++)||(16==b--)); Console.WriteLine("a的值是{0},b的值是{1}",a,b); //輸出結果是a的值是11,b的值是15 //或運算符||前一個操作為true時,不在執行後一個操作內容,所是上面的結果 Console.ReadKey(); } } }
6、位運算符
位(bit):在計算機中存儲所有數據都采用二進制,那麼二進制的為,便是我們所有的bit
1Byte=8bit 1字節=8位
1k=1024Byte
1M=1024k
1G=1024M
1T=1024G
在大俗代碼中都不適用這些運算符,但應知道這樣的運算符存在。它們主要用於高度優化的代碼,在這些代碼中,使用其他數學操作的開銷太高。因此它們通常用於驅動程序或系統代碼
~ 按位取反 &與運算 |或運算 ^異或 <<左移 >>右移
6.1 &按位與運算
6.2 或|按位運算
6.3 異或^按位運算符
6.4按位取反~按位預算符
6.5 左移<<運算符
var3=var1<<var2 var1向左移動var2位,將所得的值付給var3
6.6右移
var3=var1>>var2 var1向右移動var2位,將所得的值付給var3
左移一位,相當於乘以2;
右移一位,當當與除以2;然後去除非整數部分
7、其他運算符
7.1 字符連接運算符+
將兩個字符串連接在一起組成一個新的字符串
備註:C#中“+”共三種用法
- 數學算數運算符 var1=var2+var3
- 乘以正1 var1 =+var2 (var1=var2*(+1))
- 字符串連接 str1=“my name is” str2=“darly” str3=str1+" "+str2,則str3=“my name is darly” 7.2 is運算符
用於動態檢查對象的運行時類型是否與給定類型兼容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 其他運算符 { class Program { static void Main(string[] args) { int a = 10; double b = 3.14; string c = "it is a string"; bool mybool = false; mybool = a is int; Console.WriteLine("a is int\t"+mybool); // \t是跳轉到下一個制表符 mybool = b is double; Console.WriteLine("b is doubule\t" + mybool); mybool = c is string; Console.WriteLine("c is string\t" + mybool); Console.ReadKey(); } } }
7.3 三元運算符
表達式1?表達式2:表達式3 表達式1為true則結果為表達式2,否則結果為表達式3
輸出語句“I have 數量 pen” 當數量為1時為pen,數量大於1時為pens
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 其他運算符 { class Program { static void Main(string[] args) { Console.WriteLine("請輸入您擁有的鋼筆數量"); int qty = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("I have {0} pen{1}", qty,qty>1?"s":""); //Console.ReadKey(); // 比較用戶輸入數據與5的關系 Console.WriteLine("請您輸入要比較的數字"); int number1 = Convert.ToInt32(Console.ReadLine()); string result = number1 > 5 ? "大於等於" : "小於"; Console.WriteLine("您輸入的數字{0}5",result); Console.ReadKey(); } } }
8、運算優先級
總結練習
編程實現1532855秒是幾天幾小時幾分鐘幾秒
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 總結練習 { class Program { static void Main(string[] args) { // 方法1,利用取整再取餘的方式逐級獲取響應的單位值 Console.WriteLine("請輸入你要計算的秒數"); int day = 24 * 60 * 60; int hour = 60 * 60; //int total = 1232855; int total = Convert.ToInt32(Console.ReadLine()); int days = total / day; //計算天數 利用總秒數對一天一共多少秒取整,得到天數 int hours = (total % day) / hour; // 利用總秒數對一天一共多少秒取餘數,得到不夠一天的秒數,然後對一小時包含秒數整,得到小時數; int minutes = (total % day % hour)/60; //同樣思路,利用兩次取餘得到不足一小時的數量,再對60秒取整得到分鐘數 int minutes2 = total % 3600 / 60; //計算分鐘的方式2,總秒數對一小時取餘得到不足一小時的秒數然後取整60秒得到分鐘數 int second = total % 60; //用總數對60秒取餘得到不足一分鐘的秒數,就是秒 Console.WriteLine("{0}天{1}小時{2}分鐘{3}秒",days,hours,minutes,second); Console.WriteLine(minutes2+"分鐘"); Console.ReadLine(); } } }
到此這篇關於C#表達式和運算符詳細解析的文章就介紹到這瞭,更多相關C#表達式和運算符內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!