C#四部曲入门——运算符
一.算术运算符
算术运算符 是用于 数值类型变量计算的运算符
返回结果是数值
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);
更多推荐
所有评论(0)