一.算术运算符

算术运算符  是用于  数值类型变量计算的运算符

返回结果是数值

1.赋值符号

=

先看右侧    再看左侧   把右侧的值赋值给左侧的变量

2.算术运算符

加+,减-,乘*,除/,取余%

int i = 1;
i = i + 1;
Console.WriteLine(i);
//先把1赋值给i,再让i+1,也就是2,最后把2赋值给i

//减也同理,现在i是2,先让i-1,得到1,再把1赋值给i
i = i - 1;
Console.WriteLine(i);

//乘也同理,现在i是1,先让i*4,得到4,再把2赋值给i
i = i * 4;
Console.WriteLine(i);

//除也同理,现在i是4,先让i/3,得到1,再把1赋值给i
i = i / 3;
Console.WriteLine(i);
//但是如果数据类型为整型会丢失小数
float f = 4.0;
f = f / 3;
Console.WriteLine(f);
//浮点型不会丢失

//取余,i的值为4,先取余,4/3余1,最后再把余数1赋值给i
i = 4;
i = i % 3;
Console.WriteLine(i);

3.算术运算符的优先级

乘除取余优先级高于加减,即先算乘除取余,后算加减

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

多层括号,就先算最里层括号,依次往外算。

4.算术运算符的复合运算符

+= 、-= 、*= 、/= 、%=

复合运算符,用于自己=自己进行运算

//"+="
int a = 1;
a += a;
Console.WriteLine(a);
//等价于
int a1 = 1;
a1 = a1 + 1;
Console.WriteLine(a1);

//"-="
int b = 1;
b -= 1;
Console.WriteLine(b);
//等价于
int b1 = 1;
b1 = b1 - 1;
Console.WriteLine(b1);

//"*="
int c = 1;
c *= 1;
Console.WriteLine(c);
//等价于
int c1 = 1;
c1 = c1 * 1;
Console.WriteLine(c1);

//"/="
int d = 1;
d /= 1;
Console.WriteLine(d);
//等价于
int d1 = 1;
d1 = d1 / 1;
Console.WriteLine(d1);

//"%="
int e = 1;
e %= 1;
Console.WriteLine(e);
//等价于
int e1 = 1;
e1 = e1 % 1;
Console.WriteLine(e1);

5.算术运算符的自增减

自增运算符++ 和 自减运算符--

相同点:运算发现无论a还是b都相当于加1(++),或者-1(--)

int a = 1;
a++;
Console.WriteLine(a);

int b = 1;
++b;
Console.WriteLine(b);

int c = 1;
c--;
Console.WriteLine(c);

int d = 1;
--d;
Console.WriteLine(d);

不同点:一个是先用再加减,一个是先加减再用

int a = 1;
Console.WriteLine(a++);//1
Console.WriteLine(a);//2

int b = 1;
Console.WriteLine(++b);//2
Console.WriteLine(b);//2

int c = 1;
Console.WriteLine(c--);//1
Console.WriteLine(c);//0

int d = 1;
Console.WriteLine(--d);//0
Console.WriteLine(d);//0

++(--)在前,就先加(减)后用

++(--)在后,就先用后加(减)

int a = 10,b = 20;
int number1 = ++a + b;

a = 10;
b = 20;
int number2 = a + b++;

a = 10;
b = 20;
int number3 = a++ + ++b + ++a;


Console.WriteLine(number1);
Console.WriteLine(number2);
Console.WriteLine(number3);

二.字符串拼接

1.字符串拼接方式(1)

string str = "123";
str = str + "456";
Console.WriteLine(str);

str = "123";
str =str + 1;
Console.WriteLine(str);

str = "123";
str += "1" + 4 + true;
Console.WriteLine(str);

str = "123";
str += 1 + 2 + 3 + 4;
Console.WriteLine(str);

str = "123";
str += "" + 1 + 2 + 3 + 4;
Console.WriteLine(str);

str = "123";
str += 1 + 2 + "" + (3 + 4);
Console.WriteLine(str);

用+号拼接  是用符号唯一的方法

2.字符串拼接方式(2)

固定语法:

string.Format("带拼接的内容",内容1,内容2,……)

string name = "念陈cbwindy";
int age = 21;
string str = string.Format("我是{0},我今年{1}岁,我想要{2}",
                             name, age, "好好学习天天向上");
Console.WriteLine(str);

3.控制台打印拼接

string name = "念陈cbwindy";
int age = 21;
string str = "好好学习天天向上";
Console.WriteLine("我是{0},我今年{1}岁,我想要{2}",name, age, str);

三.条件运算符

用于比较两个常量或变量

1.符号类型:

是否大于  >

是否小于  <

是否相等  ==

是否不相等   !=

是否大于相等  >=

是否小于相等  <=

2.应用写法

bool result;
int a = 10;
int b = 5;

result = a > b;
Console.WriteLine(result);

result = a < b;
Console.WriteLine(result);

result = a == b;
Console.WriteLine(result);
result = a == 10;
Console.WriteLine(result);

result = a != b;
Console.WriteLine(result);

result = a >= b;
Console.WriteLine(result);

result = a <= b;
Console.WriteLine(result);

3.不能进行范围比较

bool result;
int a = 5;
result = 4 < a < 6;
Console.WriteLine(result);

运行报错表示,C#无法用范围比较

4.不同数据类型也可以比较

int i = 13;
byte b = 1;
long l = 34;
float f = 1.3f;
double d = 1.55;

Console.WriteLine(i > b);
Console.WriteLine(i > l);
Console.WriteLine(f > d);
Console.WriteLine(i > f);

只要是数值,就可以进行条件运算符比较大小

特殊类型,只能同类用 == 或者 != 来比较

string str = "123";
char c = 'A';
bool b = true;

Console.WriteLine(str == "123");
Console.WriteLine(str != "234");

Console.WriteLine(c == 'A');
Console.WriteLine(c != 'B');
Console.WriteLine(c > 123);

Console.WriteLine(b == true);
Console.WriteLine(b != false);

char比较特殊,也可以和字符类型进行大小比较


四.逻辑运算符

对bool值进行逻辑运算

1.逻辑与

符号:&&

用法:对两个bool值进行逻辑运算,同真则真,有假则假

bool a = true;
bool b = false;
Console.WriteLine(a && a);
Console.WriteLine(a && b);
Console.WriteLine(b && a);
Console.WriteLine(b && b);

2.逻辑或

符号:||

用法:对两个bool值进行逻辑运算,有真则真,同假则假

bool a = true;
bool b = false;
Console.WriteLine(a || a);
Console.WriteLine(a || b);
Console.WriteLine(b || a);
Console.WriteLine(b || b);

3.逻辑非

符号:!

用法:对一个bool值进行取反,真变假,假变真

bool a = true;
bool b = false;
Console.WriteLine(!a);
Console.WriteLine(!b);

4.混合使用优先级问题

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

逻辑运算符优先级低于算术运算符        条件运算符

bool gameover = false;
int hp = 100;
bool isDead = false;
bool isMustOver = true;

//false || false && true || true
bool result = gameover || hp < 0 && !isDead || isMustOver;
Console.WriteLine(result);

5.逻辑运算符短路规则

int i1 = 1;
bool result = i1 > 0 || ++i1 > 1;
Console.WriteLine(i1);

int i2 = 1;
result = i2 < 0 && --i2 == 0;
Console.WriteLine(i2);

正常来说 ++i1后输出的i1 应该为2;而--i2后输出的i2应该为0,但为什么输出都是1。

原因是因为:

        ||(逻辑或)是有真则真,当判断符号右边的bool值已经为true时,就不会判断右边的式子(不运行++i1),同理&&(逻辑或)是有假则假,当判断符号右边的bool值已经为false时,就不会判断右边的式子(不运行--i2)


五.位运算符

主要用于数值类型的计算,把数值转换为2进制,在进行位计算

1代表为true,0代表false;

1.位与&

int a = 1;
int b = 5;
int c = a & b;
Console.Write(c);

当两个数都为1才取1,有0取0

0        0        1:1
&        &        &
1        0        1:5

0        0        1:1

2.位或|

int a = 1;
int b = 5;
int c = a | b;
Console.Write(c);

当两个数都为0才取0,有1取1

0        0        1:1
 |         |         |
1        0        1:5

1        0        1:5

3.异或^

int a = 1;
int b = 5;
int c = a ^ b;
Console.Write(c);

当两个数都同号为0,异号为1

0        0        1:1
^        ^        ^
1        0        1:5

1        0        0:4

4.位取反~

int i = 5;
Console.WriteLine(~i);
//0000 0000 0000 0000 0000 0000 0000 0101
//1111 1111 1111 1111 1111 1111 1111 1010
//int是有符号数据类型,所以第一个数代表符号即为负数,负数的二进制转为十进制需要用到反码和补码的内容

把这个数的二进制每一位都按位取反

0000 0000 0000 0000 0000 0000 0000 0101
1111  1111 1111  1111 1111  1111  1111 1010

转为十进制

第一步:

1111  1111 1111  1111 1111  1111  1111 1010 - 1

1111  1111 1111  1111 1111  1111  1111 1001

第二步取反:

0000 0000 0000 0000 0000 0000 0000 0110   ——>   6   所以是  -6 

5.左移<< 和 右移>>

int i = 5;//101
int b = i << 5;
//1位       1010  ——> 10
//2位      10100  ——> 20
//3位     101000  ——> 40
//4位    1010000  ——> 80
//5位   10100000  ——> 160
Console.WriteLine(b);

int c = i >> 2;
//1位    10  ——> 2
//2位     1  ——> 1
Console.WriteLine(c);

六.三目运算符

1.基本语法

语法:空位 (bool类型)? 空位 (bool类型为真返回的值):空位(bool类型为假返回的值) 

三目运算符会有返回值,这个返回值类型必须一致

2.具体使用

int a = 5;
int b = 10;

string str = a > b ? "yes":"no";
Console.WriteLine(str);

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐