关于运算符

关于运算符

一.算数运算符

一.赋值符号

赋值符号:”=“

关键知识点:先看右侧,再看左侧,把右侧的值赋值给左侧的变量。

二.算数运算符

1.基本定义

包括加(+),减(-),乘(x),除(/),取余(%)。

用自己计算,先算右侧结果,再赋值给左侧变量。

连续运算,先算右侧的结果,再赋值给左侧变量。

初始化时就运算,先算右侧结果,再赋值给左侧变量。

2.优先级

优先级是指在混合运算时的运算顺序

乘除取余优先级高于加减

括号可以改变优先级,优先计算括号内的内容

多组括号先算最里面的括号,依次往外算。

3.算数运算符的复合运算符

固定写法 运算符+=

+= -= *= /= %=

复合运算符是用于自己=自己运算的

4.算数运算符的自增减

a++ 先用再加

++a 先加再用

二.字符串拼接

一.字符串拼接方式1

在之前的算数运算符中,只是用数值类型变量进行数学运算的。

而string类型不存在算数运算符,因此无法计算,但是可以通过+号来进行字符串拼接。(有且仅有加号)

1
2
3
4
5
6
7
8
9
10
11
12
13
string str="123";
str=str+"456"+true;
//用加号进行字符串拼接。
//输出123456true。
str=str+1;
//注意,此处也不是在进行计算,1会通过tostring函数自动进行转换。
//str也可以用+=。
str+=1+2+3+4;
str+=""(空字符串)+1+2+3+4;
//两者有不同,第一个是先执行加法,算出来10的总和再进行str字符串拼接运算
//第二个由于先加了一个空字符串,因此后面的1,2,3,4就会按照str字符串拼接来进行运算,算出来1234.
str+=1+2+""+3+4;
//和上面同样,从左到右,先1+2=3,之后再进行拼接,得出334.

二.字符串拼接方式2(很好用!!!!!)

1.固定语法

string.Format(“待拼接的内容”,内容1,内容2,。。。。。);

2.拼接内容中的固定规则

想要被拼接的内容用占位符替代{数字} 数字:0~n,依次往后。

1
2
string str2;
str2 = string.Format("我是{0},我今年{1}岁,我想要{2}","大帅哥",18,"好好学习,天天向上");

三.控制台打印

1
2
Console.WriteLine("我是{0},我今年{1}岁,我想要{2}","大帅哥",18,"好好学习,天天向上");
//WriteLine的功能和string.Format的功能类似。

Ps:占位符没有从0开始写也会报错,内容比占位符少也会报错。

三.条件运算符

一.条件运算符的基本应用

用于比较两个变量或者常量。像是>,<,==,!=,>=,<=之类。

条件运算符一定存在左右两边的内容,左边内容+条件运算符+右边内容。

注意:条件运算符不能直接使用,如果是纯比较不用结果的话,那么对于我们来说,没有任何的意义。

1
2
3
4
5
6
7
8
int a=5;
int b=6;
a>b;
//单纯这样比较会报错的。
bool result=a>b;
//这样不会报错。返回false。
result=a==b;
result=a>=b;

比较的结果是返回一个bool类型的值,true和false,如果满足条件,返回true,否则返回false。

二.各种应用写法

1
2
3
4
5
6
7
8
9
10
int a=5;
int b=10;
bool result =a<b;
//变量与变量比较
result= a<10;
//变量与数值(常量)比较。
result =5>3;
//数值和数值比较
result=a+3>a-3
//计算结果比较

由上式子可知,条件运算符的优先级低于算数运算符。

要判断一个变量是否在两个数之间,要结合逻辑运算符的知识点

三.不同类型的比较

不同数值类型之间可以随意进行条件运算符的比较。

特殊类型char string bool 只能同类型进行==和!=比较。

(char可以和int类型等数值类型比较,此时char会转换成数值类型即ASCII码进行比较。)

四.逻辑运算符

对bool类型进行逻辑运算。

一.逻辑与

符号 && 并且

规则:对两个bool值进行逻辑运算,有假则假,同真为真。

1
2
3
4
bool result=true && false;
result= 3>1 && 1<2;
//适用类型 bool类型以及条件运算符。
//逻辑运算符的优先级低于条件运算符,算数运算。

二.逻辑或

符号 || 或者

规则:对两个bool值进行逻辑运算,有真则真,同假为假。

1
2
bool result=true || false;
bool a=3>2 || 2>1;

三.逻辑非

符号 ! 不是

规则 对一个bool值进行取反,真变假,假变真.

1
2
3
4
bool result=!true;
result = !(3>1);
result = !!true;
//逻辑非的优先级较高.

四.混合使用优先级问题

规则***:!(逻辑非)优先级最高,&&(逻辑与)优先级高于||(逻辑或).***

逻辑运算符优先级低于算数运算符和条件运算符.

1
2
3
4
5
6
bool gameOver =false;
int hp=100;
bool isDead = false;
bool isMustOver =true;
bool result =gameOver || hp<0 && isDead ||isMustOver;
Console.WriteLine(result);

五.逻辑运算符短路规则(容易被忽视,多看看)

1
2
3
4
5
6
int i2=1;
bool result=i2>0 || ++3>=1;
Console.WriteLine(i2);
//i2仍然是1.
//只要逻辑与或者逻辑或左边满足了条件,右边就不计算了,被短路了.
//即++3>=1不用算了.

五.位运算符

位运算符 主要用数值类型进行计算.

将数值转换位2进制,再进行位运算.

一.位与 &

规则:连接两个数值进行位运算,将数值转换为2进制

对位运算,有0则0.

1
2
3
4
5
6
7
8
9
10
int a=1;//二进制001
int b=5;//二进制101
a & b;
//会报错,结果必须要使用.
int c= a & b;
//相当于 001
// & 101
// 001
//第一位都是1,输出1,第二位都是0,输出0,第三位有一个0,输出0.
//因此c=1.

多个数值进行位运算时,没有括号时,从左到右,依次计算

二.位或 |

规则:连接两个数值进行位运算,将数值转换为2进制

对位运算,有1则1.

1
2
3
4
int a=1;
int b=1;
c=a|b;
//和位与差不多,不解释了.

三.异或 ^

规则:连接两个数值进行位运算,将数值转换为2进制

对位运算,相同为0,不同为1.

四.位取反 ~

规则:写在数值前面,将数值转为二进制

对位运算,0变成1,1变成0.

1
2
3
int a=5;
int c=~a;
// 将完整的int0变成1,1变成0,要注意!!!

五.左移<<和右移>>

规则:让一个数的2进制数进行左移和右移.

左移几位,右侧加几个0

右移几位,右侧去掉几个0.

1
2
3
4
5
6
7
8
int a=5;//101
c=a <<5;//10100000
//c=160;
//左移几位,右侧加几个0.
a=5;//101
c=a >>2;
//c=1;
//右移几位,右侧去掉几个数字.

六.三目运算符

套路:3个空位,2个符号

固定语法:空位 ?空位:空位;

关键信息:bool类型?bool类型为真返回内容:bool类型为假返回内容。

三目运算符会有返回值,这个返回值必须一致,并且必须使用!

具体使用

1
2
3
4
5
6
7
8
9
string str =true ? "条件为真":"条件为假";
Console.WriteLine(str);
//输出条件为真。
int a=5;
str= a<1 ?"a大于1":"a不满足条件";
Console.WriteLine(str);
//输出a不满足条件。
int i=a>1?123:234;
//i=123;

综上所述:第一个空位,始终是结果为bool类型的表达式/bool变量/条件表达式/逻辑运算表达式。

第二三个空位:什么表达式都可以,只要保证它们的结果类型是一致的。


关于运算符
https://gaster44.github.io/2023/10/26/关于运算符/
作者
huangjinhong
发布于
2023年10月26日
许可协议