一青灼、表達(dá)式
表達(dá)式:表達(dá)式是指由操作數(shù)和運(yùn)算符組成的用于完成某種運(yùn)算功能的語句杂拨。
例如:
y = x*(z+100)
上述就是一個表達(dá)式悯衬。
二筋粗、運(yùn)算符
(1)算數(shù)運(yùn)算符
算術(shù)運(yùn)算符用在數(shù)學(xué)表達(dá)式中娜亿,它們的作用和在數(shù)學(xué)中的作用一樣买决。下表列出了所有的算術(shù)運(yùn)算符吼畏。
表格中的實例假設(shè)整數(shù)變量A的值為10泻蚊,變量B的值為20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加運(yùn)算符兩側(cè)的值 | A + B 等于 30 |
- | 減法 - 左操作數(shù)減去右操作數(shù) | A – B 等于 -10 |
* | 乘法 - 相乘操作符兩側(cè)的值 | A * B等于200 |
/ | 除法 - 左操作數(shù)除以右操作數(shù) | B / A等于2 |
% | 取余 - 左操作數(shù)除以右操作數(shù)的余數(shù) | B%A等于0 |
++ | 自增: 操作數(shù)的值增加1 | B++ 或 ++B 等于 21(區(qū)別詳見下文) |
-- | 自減: 操作數(shù)的值減少1 | B-- 或 --B 等于 19(區(qū)別詳見下文) |
其中+運(yùn)算符,除了數(shù)學(xué)運(yùn)算秒旋,還可以進(jìn)行數(shù)據(jù)的拼接滩褥,例如:
int a = 10;
string b = "10";
Console.WriteLine(a+b); //此處不進(jìn)行數(shù)學(xué)運(yùn)算炫加,進(jìn)行拼接俗孝,結(jié)果將打印1010
兩個相同的數(shù)據(jù)類型進(jìn)行運(yùn)算赋铝,結(jié)果一定還是這個數(shù)據(jù)類型革骨,所以兩個數(shù)相除沒有小數(shù)部分析恋,例如:
int a = 5;
int b = 2;
Console.WriteLine(a/b); //將打印結(jié)果2
不同的數(shù)據(jù)類型運(yùn)算筑凫,結(jié)果為范圍大的數(shù)據(jù)類型
double a = 5;
int b = 2;
Console.WriteLine(a/b); //將打印結(jié)果2.5
自增++運(yùn)算符和自減--運(yùn)算符巍实,符號寫在前面和后面的區(qū)別如下:
++在前哩牍,先自增膝昆,在運(yùn)算; ++在后原环,先運(yùn)算嘱吗,在自增 (--運(yùn)算符同理)
int a = 10;
++a; //或者a++,執(zhí)行結(jié)果一樣
Console.WriteLine(a); //打印11
int a = 10;
int b = a++;
Console.WriteLine(a); //打印結(jié)果11
Console.WriteLine(b); //打印結(jié)果10
int a = 10;
int b = ++a;
Console.WriteLine(a); //打印結(jié)果11
Console.WriteLine(b); //打印結(jié)果11
(2)賦值運(yùn)算符
操作符 | 描述 | 例子 |
---|---|---|
= | 簡單的賦值運(yùn)算符谒麦,將右操作數(shù)的值賦給左側(cè)操作數(shù) | C = A + B將把A + B得到的值賦給C |
+ = | 加和賦值操作符,它把左操作數(shù)和右操作數(shù)相加賦值給左操作數(shù) | C + = A等價于C = C + A |
- = | 減和賦值操作符患膛,它把左操作數(shù)和右操作數(shù)相減賦值給左操作數(shù) | C - = A等價于C = C - A |
* = | 乘和賦值操作符踪蹬,它把左操作數(shù)和右操作數(shù)相乘賦值給左操作數(shù) | C * = A等價于C = C * A |
/ = | 除和賦值操作符跃捣,它把左操作數(shù)和右操作數(shù)相除賦值給左操作數(shù) | C / = A疚漆,C 與 A 同類型時等價于 C = C / A |
%= | 取模和賦值操作符娶聘,它把左操作數(shù)和右操作數(shù)取模后賦值給左操作數(shù) | C%= A等價于C = C%A |
例如:
int a = 1; //正確
// =賦值運(yùn)算符左邊只能是變量丸升,不能是數(shù)據(jù)常量发钝。
1 = a; //錯誤
a + 1 = 2; //錯誤
int a = 10;
int b = 5;
a += b; // 等價 a = a + b;
Console.WriteLine(a); //打印15
Console.WriteLine(b); //打印5
(3)關(guān)系運(yùn)算符
表格中的實例整數(shù)變量A的值為10酝豪,變量B的值為20:
運(yùn)算符 | 描述 | 例子 |
---|---|---|
== | 檢查如果兩個操作數(shù)的值是否相等,如果相等則條件為真歹篓。 | (A == B)為假。 |
!= | 檢查如果兩個操作數(shù)的值是否相等毙籽,如果值不相等則條件為真坑赡。 | (A != B) 為真毅否。 |
> | 檢查左操作數(shù)的值是否大于右操作數(shù)的值螟加,如果是那么條件為真捆探。 | (A> B)為假徐许。 |
< | 檢查左操作數(shù)的值是否小于右操作數(shù)的值卒蘸,如果是那么條件為真。 | (A <B)為真翻默。 |
>= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是那么條件為真趾牧。 | (A> = B)為假。 |
<= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值哄芜,如果是那么條件為真。 | (A <= B)為真柬唯。 |
=與==的區(qū)別:
int a = 10;
int b = 10;
Console.WriteLine(a = b); //=代表賦值认臊,把b的值賦給a,然后打印a的值10
Console.WriteLine(a == b); //==代表比較兩者是否相等,打印true.
(4)邏輯運(yùn)算符
下表列出了邏輯運(yùn)算符的基本運(yùn)算锄奢,假設(shè)布爾變量A為true失晴,變量B為false
操作符 | 描述 | 例子 |
---|---|---|
&& | 稱為邏輯與運(yùn)算符剧腻。當(dāng)且僅當(dāng)兩個操作數(shù)都為真,條件才為真涂屁。 | (A && B)為假书在。 |
| | | 稱為邏輯或操作符。如果任何兩個操作數(shù)任何一個為真拆又,條件為真。 | (A | | B)為真。 |
! | 稱為邏輯非運(yùn)算符。用來反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為true调俘,則邏輯非運(yùn)算符將得到false骇钦。 | A巯伞(A && B)為真。 |
例如:
int a = 20;
int b = 500;
Console.WriteLine(a > b && a > 0); //打印false
Console.WriteLine(a > b || a > 0); //打印true
Console.WriteLine(!(a > b || a > 0)); //打印false
(5)三目運(yùn)算符
該運(yùn)算符有3個操作數(shù),并且需要判斷布爾表達(dá)式的值盼忌。該運(yùn)算符的主要是決定哪個值應(yīng)該賦值給變量跨嘉。
條件表達(dá)式 ?結(jié)果1 :結(jié)果2 (表達(dá)式成立,執(zhí)行結(jié)果1,否則執(zhí)行結(jié)果2)亮靴,例如:
int a = 10;
int b = 20;
int c = a > b ? a : b;
Console.WriteLine(c); //此處打印20
三、數(shù)據(jù)類型轉(zhuǎn)換
在C#語言中,不同類型的數(shù)據(jù)在進(jìn)行混合運(yùn)算時需要進(jìn)行類型轉(zhuǎn)換,即將不同類型的數(shù)據(jù)轉(zhuǎn)換為同種類型的數(shù)據(jù)后再進(jìn)行計算,針對于值類型的數(shù)據(jù),類型轉(zhuǎn)換主要包括隱式轉(zhuǎn)換和顯式轉(zhuǎn)換兩種形式谣膳。
- 隱式轉(zhuǎn)換:系統(tǒng)默認(rèn)的犬庇、無須顯式聲明即可進(jìn)行的轉(zhuǎn)換葬荷。
- 顯式轉(zhuǎn)換:要求一定要將某一類型的數(shù)據(jù)轉(zhuǎn)換為另外一種類型懊直,則可以使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符進(jìn)行轉(zhuǎn)換雕崩,這種強(qiáng)制轉(zhuǎn)換的過程稱為顯式轉(zhuǎn)換饶火。
(1)隱式轉(zhuǎn)換舉例
//將int類型自動轉(zhuǎn)換成long類型
int a = 10;
long b = a;
//將int類型自動轉(zhuǎn)換成double類型
int a = 10;
double b = a;
隱式轉(zhuǎn)換是從低精度、小范圍的數(shù)據(jù)類型轉(zhuǎn)換為高精度刨摩、大范圍的數(shù)據(jù)類型罢浇,如下:
源類型 | 目標(biāo)類型 |
---|---|
char | int、long攒岛、float嗅榕、double |
short | int、long金砍、float髓绽、double |
int | long、float启盛、double |
long | float蹦掐、double |
float | double |
注意:char類型不能通過隱式轉(zhuǎn)換轉(zhuǎn)換為short類型。
(2)顯式轉(zhuǎn)換舉例
double a = 1.2;
int b = (int)a; //將int類型轉(zhuǎn)換為double類型僵闯,會直接忽略掉小數(shù)部分卧抗。
數(shù)據(jù)類型轉(zhuǎn)換的不兼容性:
- 數(shù)字和布爾不能類型轉(zhuǎn)換
- 字符和布爾不能類型轉(zhuǎn)換
- 字符轉(zhuǎn)數(shù)字可以自動轉(zhuǎn)換,數(shù)字轉(zhuǎn)字符只能強(qiáng)制轉(zhuǎn)換
- 字符和數(shù)字相互轉(zhuǎn)換的時候使用ASCII編碼來進(jìn)行轉(zhuǎn)換
(3)字符和數(shù)字之間的轉(zhuǎn)換(通過ASCII碼轉(zhuǎn)換)
字符轉(zhuǎn)數(shù)字:
char myChar = 'A';
int myNum = myChar;
Console.WriteLine(myNum);
數(shù)字轉(zhuǎn)字符:
int myNum = 65;
char myChar = (char)myNum;
Console.WriteLine(myChar);
(4)字符和字符串的特殊關(guān)系
字符串等于字符數(shù)組:
string str = "hello";
char myChar = str[0];
Console.WriteLine(myChar); //此處可以打印數(shù)組第一個元素內(nèi)容h
(5)值類型和字符串類型的相互轉(zhuǎn)換
值類型(普通類型)轉(zhuǎn)成字符串:
int a = 10;
//string str = a+""; //可以通過+來進(jìn)行轉(zhuǎn)換
string str = a.ToString(); //通常使用ToString方法進(jìn)行轉(zhuǎn)換
double PI = 3.1415926;
string str = PI.ToString("F2");
Console.WriteLine(str);
ToString()可以直接轉(zhuǎn)換成字符串鳖粟,也可以格式化字符串颗味,如下:
格式 | 格式化字符串 | 結(jié)果 |
---|---|---|
貨幣 | 2.5.ToString("C") | ¥2.50 |
十進(jìn)制數(shù) | 25.ToString("D5") | 00025 |
固定點(diǎn) | 25.ToString("F2") | 25.00 |
常規(guī) | 2.5.ToString("G") | 2.5 |
數(shù)字 | 2500000.ToString("N") | 2,500,000.00 |
百分比 | 0.126.ToString(“P”) | 12.6% |
字符串轉(zhuǎn)值類型(普通類型):
string str = "12";
int a = int.Parse(str);
Console.WriteLine(a);
可以通過數(shù)據(jù)類型的Parse方法進(jìn)行字符串轉(zhuǎn)換成值類型。