3、运算符
目录
1、算数运算符
1、赋值符号
c
=
//把右侧的值赋给左侧的变量
2、算数运算符
c
+
_
*
/ float f = 1 / 2f;
%
3、算数运算符的优先级
c
//乘除余优先级高于加减
括号可以改变优先级,优先计算括号内的内容
4、算数运算符的复合运算
c
复合运算符是用于自己 = 自己进行运算
+= int i = 1; i += 1; // i = i+1 ;
-=
*=
/=
%=
5、算数运算符的自增减
c
//自增运算符 ++
int i =1;
i++; //先用再加 Console.WriteLine(i++); //1
++i; //先加再用 Console.WriteLien(++i); //3
//自减运算符 --
思考 秒转化时间
将987654秒转化为n天n小时n分钟n秒?
c
//一天对应的秒数 = 24小时 * 60分钟 *60秒
int oneDayS = 24*60*60;
//一小时对应秒数 = 60分钟 * 60秒
int oneHourS = 60*60;
//一分钟对应的秒数 = 60秒
int oneMinS = 60;
int second = 987654;
//天数 用总的秒数 / 一天所用秒数
int day = second / oneDayS;
//小时数 用不足一天的秒 / 一小时对应的秒数
int hour = second % oneDayS /oneHourS;
//分钟数 用不足一小时的秒 / 一分钟对应的秒数
int minute = second % oneHourS / oneMinS;
int sec = second % oneMinS;
Console.Write(day+"天"+hour+"小时"+minute+"分钟"+sec+"秒");
2、字符串拼接
c
1、字符串拼接方式1 //通过+进行拼接,也可以复合运算+=
string str = "1"; str = str + "1"; //11
str += "2" + true; //112true
str += 1+2+3+4; //112true10
str += 1+2 +""+3+4; //112true10334
2、字符串拼接方式2 //string.Format("{内容1,...}",内容1,...);
string str = string.Format("{0},{1},{2}","",22,true);
非字符串格式会自动调用ToString方法进行占位符的拼接
3、控制台打印拼接 WriteLien会自动调用Format方法
Console.WriteLine("{0},{1},{2}","",22,true)
3、条件运算符
1、条件运算符概念
c
//比较两个变量或常量,比较结果返回bool类型的值
> //是否大于
int a = 5; int b = 20; bool result = a>b;
< //是否小于
== //是否等于
!= //是否不等于
>= //是否大于等于
<= //是否小于等于
2、各种写法
c
左边 条件运算符 右边
//变量之间的比较
//变量和常量比较
int a = 3; bool result = a < 5;
//计算结果比较
条件运算符优先级低于算数运算符(先计算,再比较)
int a = 2; bool result = a+3 > 5-a;
3、不能进行范围比较
1< a <6 C#不能这样写(需要逻辑运算符)
4、不同类型之间的比较
c
//不同数值类型之间,可以随意进行条件运算符比较
int i = 5; float f = 2.2f; bool result = i < f;
//特殊类型char string bool 只能相同类型进行 == 和 != 比较
string str = "a"; bool result = str == "a";
4、逻辑运算符
对bool类型进行的逻辑运算
1、逻辑与
c
&& 对两个bool值进行逻辑运算(青睐false,比较苛刻)
//有假则假,同真为真
bool result = true && false;
int i =3; bool result = i > 1 && i < 5; //1<i<5;
2、逻辑或
c
|| 对两个bool值进行逻辑运算(青睐true,比较大方)
//有真则真,同假为假
3、逻辑非
! 对一个bool值进行取反,优先级较高
4、混合使用优先级问题
c
! > && > ||
5、逻辑运算符的断路规则
c
//只要逻辑与&&、逻辑或||左边满足(false、true)条件,右边作废
int i = 1;
bool result = i < 0 && ++i >=0;
5、位运算符
主要用于数值类型进行计算(将数值转换为二进制,再进行位运算),游戏中可以通过位运算表示buff和状态的添加或者移除
1、位与 &
c
//连接两个数值进行位运算,将数值转为二进制
对位运算:有0则0
int a = 1,b = 5; int c = a & b;
2、位或 |
c
//连接两个数值进行位运算,将数值转为二进制
对位运算:有1则1
3、异或 ^
c
//连接两个数值进行位运算,将数值转为二进制(异或可以做加密方式)
对位运算:相同为0,不同为1
4、位取反 ~
c
//写在数值前面,将数值转为二进制
对位运算:0变1,1变0
int a = 5 ; int b = ~a; //-6
int类型5的二进制:
0000 0000 0000 0000 0000 0000 0000 0101
取反后为负数二进制,反码补码得到-6
5、左移 << 和 右移 >>
c
//让一个数的二进制进行左移和右移
左移几位,右侧加几个0
int a =5; int b = a << 1;
右移几位,右侧删几位
6、三目运算符
c
//bool类型 ? bool类型为真返回内容 : bool类型为假返回内容;
string str = true ? "条件为真" : "条件为假";
思考 闰年
如何判断闰年?(闰年年份能被400整除或者能被4整除,但不能被100整除)
c
int year = 2024;
string result = year %400 ==0 || year%4 == 0 && year%100 != 0 ? "闰年" : "平年";