C#学习笔记4:C#的基本运算

这是我一边学习一边写下的笔记,如果内容有错,恳请在下方留言跟我说,我会非常感谢的!!!

基本运算

一个运算式要由运算元与运算子组成

https://ithelp.ithome.com.tw/upload/images/20210410/20136522i9YWUQvsA1.png

  • C#提供3种运算方式:
  1. 算术运算 2. 关系运算 3. 逻辑运算
  • 所以运算子根据其功能也有需多的区分:
  1. 算术运算子
  2. 关系运算子
  3. 逻辑运算子
  4. 复合指定运算子
  5. 位元运算子

算术运算子

https://ithelp.ithome.com.tw/upload/images/20210410/2013652252yz4SHGkP.png

运算的结果会与变数型别有关系

int a = 5 / 2;
a = 2 
因为变数a的型别int是整数类,C# 会自动省略小数点之後,只留下整数的部分存进变数里面

string型别也适用於加法(只适用於加法)

string a = "Hello";
string b = " World!";
string c = a + b; 这时string c会储存Hello World!的字串

接下来要看一个特别的例子
https://ithelp.ithome.com.tw/upload/images/20210410/20136522HN3FvQD7T7.png
这时的MessageBox会显示
https://ithelp.ithome.com.tw/upload/images/20210410/20136522WEWzCQMLGe.png


关系运算子

https://ithelp.ithome.com.tw/upload/images/20210410/20136522ohN2Rgd44M.png


条件逻辑运算子

https://ithelp.ithome.com.tw/upload/images/20210410/201365222gK0RZUDsi.png

只有一个的|还有&,在进行判断时,前後两个运算元都会评估。
两个的||和&&,在进行判断时,只有在必要时才会评估右边的运算元。

举例来说:
假 & 真:已经知道第一个是假了,&还是会求出前後运算元的值才进行判断
假 && 真:第一个已经是假了,结果必定为假,&&不用求出右边运算元的值就会进行判断

所以在进行判断时||跟&&是比较有效率的,比较重要的比较值就放前面罗~


复合指定运算子

https://ithelp.ithome.com.tw/upload/images/20210410/20136522tcfPf6NkR7.png

要注意复合指定运算子不包刮递增(++)及递减(--)

下面的三个算式结果是一样的(只有在+1的时候第三条算式才会一样)

int a =1;
a = a + 1;
a += 1;
a ++;

位元运算子(2进制)

https://ithelp.ithome.com.tw/upload/images/20210410/201365227cTtXkncVZ.png

元运算子运算之前要先把10位元转换成2位元

https://ithelp.ithome.com.tw/upload/images/20210410/20136522qZAc5qn30F.png

如果是11就是1011,11 = 8 (3次方) + 2(1次方) + 1(0次方)

再来就套用位元运算子

https://ithelp.ithome.com.tw/upload/images/20210410/20136522nmnI4we5Nb.png

举例

5^3 =
  0101 5
 ^0011 3
= 0110 6

左移右移

  1. 选择将位元左移"<<"或是右移">>"N位元
  2. 移动後的值空的位置补0
    以31作范例 (11111)
int x = 31 << 3 就是31*2*2*2 = 248
int x = 31 >> 3 就是31/2/2/2 = 3
左移 1111 1000 = 248
右移 0011 = 3 

参考资料
Day08-C#运算式与运算子(+、-、*、/、>、<....等)-来用C#算数学吧!(上)
Day09-C#运算式与运算子(+、-、*、/、>、<....等)-来用C#算数学吧!(下)
C#基础


<<:  CodeWars : 新手村练等纪录01- Isograms

>>:  CMoney工程师战斗营weekly7

Day 28 - Build a Experimental Video Speed Controller UI

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...

Day26 - 【概念篇】Keycloak使用基本概念 - 第二部分: User & Group

本系列文之後也会置於个人网站 帐号(User) 基本讯息 接着来看看与帐号有关的设定。 在之前,已...

Day 06 | Dart基本介绍 - private & static

在昨天的文章中,讲到了类别基础用法包含了「宣告」、「建构子」及「实体化」,今天会继续说明Dart c...

Day 30 - 时光飞逝的日子

最後一天依然 Q_Q 哇~ 突然 30 天就这样过了 (又老了 第一次参加铁人赛~ 解到成就了耶耶...

【C#】Behavioral Patterns Memento Mode

The Memento design pattern without violating encap...