03-運(yùn)算符锻弓、表達(dá)式和數(shù)據(jù)類型轉(zhuǎn)換

一青灼、表達(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)換成值類型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牺弹,一起剝皮案震驚了整個濱河市浦马,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌张漂,老刑警劉巖晶默,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異航攒,居然都是意外死亡磺陡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門漠畜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來币他,“玉大人,你說我怎么就攤上這事憔狞『ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵瘾敢,是天一觀的道長拍冠。 經(jīng)常有香客問我尿这,道長,這世上最難降的妖魔是什么庆杜? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任射众,我火速辦了婚禮,結(jié)果婚禮上晃财,老公的妹妹穿的比我還像新娘叨橱。我一直安慰自己,他們只是感情好断盛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布罗洗。 她就那樣靜靜地躺著,像睡著了一般郑临。 火紅的嫁衣襯著肌膚如雪栖博。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天厢洞,我揣著相機(jī)與錄音仇让,去河邊找鬼。 笑死躺翻,一個胖子當(dāng)著我的面吹牛丧叽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播公你,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踊淳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陕靠?” 一聲冷哼從身側(cè)響起迂尝,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剪芥,沒想到半個月后垄开,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡税肪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年溉躲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片益兄。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锻梳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出净捅,到底是詐尸還是另有隱情疑枯,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布灸叼,位于F島的核電站神汹,受9級特大地震影響庆捺,放射性物質(zhì)發(fā)生泄漏古今。R本人自食惡果不足惜屁魏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捉腥。 院中可真熱鬧氓拼,春花似錦、人聲如沸抵碟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拟逮。三九已至撬统,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敦迄,已是汗流浹背恋追。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罚屋,地道東北人苦囱。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像脾猛,于是被迫代替她去往敵國和親撕彤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容