Unity相关知识体系梳理(一)c#语言_3
昨天我们进行了C#的第二部分的梳理,即C#的变量,常量,数据类型部分。而我们接下来要讲的是C#中的运算符和函数方法,这部分和昨天的部分同等重要,要牢记。
C#运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,C#内置的运算符主要有以下几种
- 算术运算符
- 关系运算符
- 布尔逻辑运算符
- 赋值运算符
- 其他运算符
算数运算符
c#中算数运算符主要有以下几种
运算符 | 描述 |
---|---|
+ | 把两个操作数相加 |
- | 从第一个操作数中减去第二个操作数 |
* | 把两个操作数相乘 |
/ | 分子除以分母 |
% | 取模运算符,整除后的余数 |
++ | 自增运算符,整数值增加 1 |
- - | 自减运算符,整数值减少 1 |
算术运算符使用数值操作数执行算术运算 看下面实例
int tmpIntA = 10;
int tmpIntB = 20;
Console.WriteLine(tmpIntA + tmpIntB);
Console.WriteLine(tmpIntA -tmpIntB);
Console.WriteLine(tmpIntA * tmpIntB);
Console.WriteLine(tmpIntA / tmpIntB);
Console.WriteLine(tmpIntA % tmpIntB);
tmpIntA++;
Console.WriteLine(tmpIntA);
tmpIntA--;
Console.WriteLine(tmpIntA);
Console.ReadLine();
运算结果为
此处关于 ++ 和 - -的相关计算有运算顺序的注意
int tmpIntA = 10;
int tmpIntB = 20;
int tmpIntAnswer = 0;
tmpIntAnswer = tmpIntA++;//先将tmpIntA的值赋值给tmpIntAnswer ,然后进行++运算
Console.WriteLine(tmpIntAnswer);//此时tmpIntAnswer =10;tmpIntA=11;
tmpIntAnswer = ++tmpIntA;//现将tmpIntA进行++运算,然后赋值给tmpIntAnswer ;
Console.WriteLine(tmpIntAnswer);//此时tmpIntAnswer=tmpIntA=12;
Console.ReadKey();
输出结果为 10 ,12。- -运算符与之同理。
算数运算符运算符的运算顺序满足数学运算规律,如果不用括号控制的话,通常会从左至右按数学逻辑计算
关系运算符
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 |
int tmpIntA = 10;
int tmpIntB = 10;
bool tmpBoolAnswer = false;
tmpBoolAnswer = (tmpIntA == tmpIntB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpIntA != tmpIntB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpIntA >= tmpIntB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpIntA <= tmpIntB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpIntA > tmpIntB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpIntA < tmpIntB);
Console.WriteLine(tmpBoolAnswer);
Console.ReadKey();
运算结果如下
布尔逻辑运算符
运算符 | 描述 |
---|---|
&& | 称为条件逻辑与运算符。如果两个操作数都非零,则条件为真。 |
ll | 称为条件逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 |
^ | 称谓逻辑异或运算符 ,如果两个操作数不同,则条件为真。 |
& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 |
l | 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 |
bool tmpBoolA = true;
bool tmpBoolB = false;
bool tmpBoolAnswer = false;
tmpBoolAnswer = (tmpBoolA && tmpBoolB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpBoolA & tmpBoolB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpBoolA || tmpBoolB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpBoolA | tmpBoolB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (tmpBoolA^tmpBoolB);
Console.WriteLine(tmpBoolAnswer);
tmpBoolAnswer = (!tmpBoolA );
Console.WriteLine(tmpBoolAnswer);
Console.ReadKey();
运算结果如下
此处需要说明的是
- &&与&运算符的差别是,运算false&&true的时候,会产生逻辑短路,即并不会运算&&后面的值,而false&true的时候,会运算&后面的值,ll 和l的运算同理。
- 对于整型数值类型的操作数,&、| 和 ^ 运算符执行位逻辑运算。 有关详细信息,请参阅 位运算符和移位运算符.
赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 |
int tmpIntA = 10;
int tmpIntAnswer = 0;
tmpIntAnswer += tmpIntA;
Console.WriteLine(tmpIntAnswer);
tmpIntAnswer -= tmpIntA;
Console.WriteLine(tmpIntAnswer);
tmpIntAnswer *= tmpIntA;
Console.WriteLine(tmpIntAnswer);
tmpIntAnswer /= tmpIntA;
Console.WriteLine(tmpIntAnswer);
tmpIntAnswer = tmpIntA;
Console.WriteLine(tmpIntAnswer);
tmpIntAnswer %= tmpIntA;
Console.WriteLine(tmpIntAnswer);
Console.ReadKey();
运算结果为
其中的运算过程以+=为例则 tmpIntAnswer += tmpIntA;等价于tmpIntAnswer =tmpIntAnswer +tmpIntA;
但是其中需要注意的是,=作为运算符,它的运算顺序是从右向左计算
int tmpIntA = 10;
int tmpIntB = 20;
int tmpIntAnswer = 0;
tmpIntAnswer = tmpIntA = tmpIntB;
Console.WriteLine(tmpIntAnswer);
Console.WriteLine(tmpIntA);
输出结果为20 ,20;其中tmpIntAnswer = tmpIntA = tmpIntB等价于tmpIntAnswer = (tmpIntA = tmpIntB);
其他运算符
其他运算符中我们挑选一些常用的例子,昨天我们尝试过运用size of来看一个变量在内存中的大小,其实size of就是一个运算符,与之类似的还有type of,获取某个变量的类型。我们这里要说的是== ?:==这个运算符 。
int tmpIntA = 10;
int tmpIntAnswer = 0;
tmpIntAnswer = (tmpIntA == 10) ? 20 : 30;
运算结果是 20 。这个运算符是判断?前面的条件,如果条件是True则取值:前面的值,否则取后面的值。
函数方法(一)
一个方法(函数)是把一些相关的语句组织在一起,用来执行一个任务的语句块。我们对于一个函数的主要操作是声明及调用
声明函数
当定义一个方法时,从根本上说是在声明它的结构的元素,一个函数的主要部分包括
修饰符+ 返回值+ 函数名+(参数)+{函数体}
实例如下:
static void tmpFunctiopnA()
{
//这是一个没有参数,没有返回值的函数
}
static int tmpFunctiopnA(int tmpIntInput)
{
//这是一个有一个int型的参数,会反还一个Int型的返回值的函数
int tmpIntReturn=0;
tmpIntReturn = tmpIntInput;
return tmpIntReturn;
}
修饰符部分我们明天详细讲述。
调用函数
调用函数需要使用函数名进行调用,实例如下:
static void Main(string[] args)
{
tmpFunctiopnA();
tmpFunctiopnB(30);
int tmpIntAnswaer = 0;
tmpIntAnswaer = tmpFunctiopnB(20);
Console.WriteLine("我是函数外面输出的tmpIntAnswaer" + tmpIntAnswaer);
Console.ReadLine();
}
static void tmpFunctiopnA()
{
//这是一个没有参数,没有返回值的函数
}
static int tmpFunctiopnB(int tmpIntInput)
{
//这是一个有一个int型的参数,会反还一个Int型的返回值的函数
int tmpIntReturn=0;
tmpIntReturn += tmpIntInput;
Console.WriteLine("我是函数里面输出的tmpIntReturn" + tmpIntReturn);
return tmpIntReturn;
}
输出结果如下:
在C#控制台中,我们有一个主函数Main函数,此函数是程序进入接口。我们可以自定义其他函数,然后在主函数中调用,来达到控制流程得到结果的目的。
本例中可以看到我们调用函数是通过函数名调用的,每当函数被调用时,函数都会执行一次。当函数带参数的时候,我们必须传入一个与之类型相同的参数,当函数有返回值的时候,我们可以选择用与返回值类型相同的变量来接收返回值,我们也可以不接收返回值,这主要取决于此函数的功用。