C# 的操作符和运算符
C# 的表达式和操作符介绍
在 C# 中,表达式是由操作符和操作数组成的计算式,用于执行特定的操作并返回一个值。操作符是用于执行操作的符号或关键字。C# 支持多种类型的操作符,下面将详细介绍常见的操作符及其用法。
一、算术操作符
算术操作符用于执行基本的数学运算,如加、减、乘、除和取余。
使用示例:
// + - * / % int a = 10; int b = 3; Console.WriteLine("a+b="+(a + b)); Console.WriteLine("a-b=" + (a - b)); Console.WriteLine("a*b=" + (a * b)); Console.WriteLine("a/b=" + (a / b)); Console.WriteLine("a%b=" + (a % b)); //所谓求余,是得到余数的意思 10/5=2余数为0 //自增1 ++ a++理解就是在自己本身累加1,a=a+1=10+1=11 //Console.WriteLine("a++=" + (a++)); //变量++的意思是,先赋值再自身+1。这时候的a=11,不是10 //Console.WriteLine("++a=" + (++a)); // ++11,++变量。先自身+1,再赋值 12 //自减1 -- a--理解就是在自己本身减1,a=a-1=10-1=9 //Console.WriteLine("a--=" + (a--)); // 12-- 先输出12,再自身-1,12-1=11 //Console.WriteLine("--a=" + (--a)); // --11,先自身-1,再赋值,10 //正常情况来说变量++ 和 ++变量 正常不涉及赋值时,没有区别 a++; Console.WriteLine("a=" + a); ++a; Console.WriteLine("a=" + a); int c = b++; Console.WriteLine("c=" + c); c = ++b; Console.WriteLine("c=" + c);
二、赋值操作符
赋值操作符用于将一个值赋给一个变量。
使用示例:
//赋值运算符 int a = 10; int b = 20; a += b; //a=a+b=30 Console.WriteLine("a+=b =>"+a); a -= b; // a = a-b Console.WriteLine("a-=b =>" + a); a *= b; // a = a*b Console.WriteLine("a*=b =>" + a); a /= b; // a = a / b Console.WriteLine("a/=b =>" + a); a %= b;// a= a%b Console.WriteLine("a%=b =>" + a);
三、比较操作符
比较操作符用于比较两个值,返回一个布尔值。
使用示例:
//比较运算符 int a = 10; int b = 10; Console.WriteLine(a+" == "+b+"的结果是:"+(a == b)); Console.WriteLine(a + " != " + b + "的结果是:" + (a != b)); Console.WriteLine(a + " > " + b + "的结果是:" + (a > b)); Console.WriteLine(a + " < " + b + "的结果是:" + (a < b)); Console.WriteLine(a + " >= " + b + "的结果是:" + (a >= b)); Console.WriteLine(a + " <= " + b + "的结果是:" + (a <= b));
四、逻辑操作符
逻辑操作符用于执行布尔逻辑运算,返回一个布尔值。
&&:逻辑与。两个条件成立结果返回为true,两个结果或其中一个结果为假时,结果直接返回为false。
||:逻辑或。其中一个条件成立结果返回为true,两个结果为假时,结果直接返回为false。
!:逻辑非。对结果取反,原来结果为true取反为false,反之原来结果为false,取反结果为true。
补充知识点:
1、逻辑运算符存在短路思想,也就是说,如果用&&判断,第一个条件为真时,会继续判断第二个条件是否成立。如果第一个条件为假时,直接返回结果为false,不会判断第二个条件是否成立。
2、用||判断时,第一个条件为真时直接返回结果为真,不会判断第二个条件。只有第一个条件为假时,才会判断第二个条件是否成立。
使用示例:
int a = 10; int b = 20; // 逻辑与 && ,两个条件都为真,结果才能为真。只要其中一个或两个位假,最终结果都为假 Boolean res = a == 10 && b == 20; Console.WriteLine("结果是:"+res); //逻辑或 || 逻辑或,只要其中一个结果为真,那么最后的结果都为真。如果两个位假,才真的结果为假 Boolean res2 = a == 10 || b == 20; Console.WriteLine("结果是:" + res2); //逻辑非 ! 所谓取反,就是原来结果为真取反之后就是假;如果原来结果为假,取反最后结果就为真 Console.WriteLine("结果是:" + !res2); //补充知识点:逻辑运算符存在短路思想,也就是说,如果用&&判断,第一个条件为真时,会继续判断第二个条件是否成立。如果第一个条件为假时,直接返回结果为false,不会判断第二个条件是否成立。 //用||判断时,第一个条件为真时直接返回结果为真,不会判断第二个条件。只有第一个条件为假时,才会判断第二个条件是否成立。
五、位操作符
位操作符用于执行按位操作。
补充5的二进制求解过程:
将十进制数转换为二进制数可以使用除2取余的方法,以下是将十进制数5转换为二进制数的具体步骤:
(1)用要转换的十进制数除以2,得到商和余数。
对于5,进行5÷2的运算,商为2,余数为1。
(2)将得到的商继续除以2,再次得到新的商和余数。
用上一步得到的商2除以2,商为1,余数为0。
(3)重复上述步骤,直到商为0。
再用商1除以2,商为0,余数为1。
(4)最后,将每次得到的余数从右到左排列,就得到了对应的二进制数。
按照上述步骤,我们得到的余数依次为1、0、1,从右到左排列后,5的二进制数就是101。
使用示例:
// 按位与运算 int a = 5; int b = 3; int c = a & b; Console.WriteLine(a+" & "+b+"的结果:"+c); // 按位或运算 c = a | b; Console.WriteLine(a + " | " + b + "的结果:" + c); // 按位或运算 按shift + 6 得到(需要是英文输入法) c = a ^ b; Console.WriteLine(a + " ^ " + b + "的结果:" + c); // 取反 shift + (、~) c = ~a; Console.WriteLine(" ~ " + a + "的结果:" + c); // 左位移 << c = a<<2; Console.WriteLine(a + "<<2的结果:" + c); // 右位移 >> c = a >> 1; Console.WriteLine(a + ">>1的结果:" + c); // 2 int d = -5 >> 1; Console.WriteLine("-5>>1的结果:" + d); // -3
六、条件操作符(三元操作符)
条件操作符用于根据条件表达式的结果返回不同的值。
条件操作符可以在简单的条件判断场景下替代if - else
语句,使代码更加简洁,特别是在表达式内部需要根据条件返回不同值的情况。但对于复杂的条件逻辑,if - else
语句可能会更清晰易读。
使用示例:
//三元运算符 条件成立,输出第一个表达式,条件不成立输出第二个表达式 string result = 10 != 20 ? "10不等于20" : "10小于20"; Console.WriteLine(result);
七、空合并操作符
空合并操作符用于返回第一个非空的操作数。
需要注意的是,两个操作数的类型必须兼容。如果expression1
的类型是可空类型,expression2
的类型必须与expression1
的基础类型相同或者可以隐式转换为该基础类型。例如,如果expression1
是int?
类型,expression2
可以是int
类型或者可以隐式转换为int
类型的值。
使用示例:
//空合并操作符 如果表达式1有值就直接输出第一个值,没有值就输出表达式2 //string name = null; //空值 string name = "张三"; //如果是括号括起来的内容,可以作为整体处理 string info = "欢迎你" + (name ?? "李四"); Console.WriteLine(info);
八、空条件操作符
空条件操作符用于在链式调用中优雅地处理 null 值。
在 C#中,空条件操作符(?.)用于简化对可能为null
的对象成员的访问。以下是关于空条件操作符的语法表格:
这些空条件操作符可以帮助我们更安全地处理可能存在null
值的情况,使代码更加健壮,尤其是在处理复杂对象层次结构和集合时。
使用示例:
//空操作符 string sex = "男"; Console.WriteLine(sex?.Length); // 括号的作用:先算括号内的,再算括号外的,先乘除再加减 double res = 10 * (5 + 1 + 2 - 3 + 5) / 2 - 10; Console.WriteLine(res);
练习题:简单计算器
编写一个 C# 程序,模拟一个简单的计算器,可以进行加法、减法、乘法和除法运算。程序应提示用户输入两个数字和一个操作符,然后输出计算结果。
参考答案:(下面用到了分支结构的内容,由于没有学,会比较难,可以先简单的做两个变量计算加减乘除的运算)
static void Main() { Console.WriteLine("请输入第一个数字:"); double num1 = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("请输入操作符(+、-、*、/):"); char operatorSymbol = Console.ReadLine()[0]; Console.WriteLine("请输入第二个数字:"); double num2 = Convert.ToDouble(Console.ReadLine()); double result = 0; switch (operatorSymbol) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': if (num2!= 0) { result = num1 / num2; } else { Console.WriteLine("除数不能为零,请重新输入!"); return; } break; default: Console.WriteLine("无效的操作符,请重新输入!"); return; } Console.WriteLine($"计算结果:{num1} {operatorSymbol} {num2} = {result}"); }
需要购买本课才能留言哦~