71muke?v=1
在线看书
立即购买

第一章 前言

收起
2024-07-22更新,每天更一篇

第二章 C#简介

收起
2024-07-22更新,每天更一篇

第三章 C#的基本语法

收起
2024-07-22更新,每天更一篇

第四章 C#控制语句

收起
2024-07-22更新,每天更一篇

第五章 异常处理

收起
2024-07-22更新,每天更一篇

第六章 面向对象编程

收起
2024-07-22更新,每天更一篇

第七章 C#中提供的工具类

收起
2024-07-22更新,每天更一篇

第八章 C#实战

收起
2024-07-22更新,每天更一篇

C# 的操作符和运算符

C# 的表达式和操作符介绍

在 C# 中,表达式是由操作符和操作数组成的计算式,用于执行特定的操作并返回一个值。操作符是用于执行操作的符号或关键字。C# 支持多种类型的操作符,下面将详细介绍常见的操作符及其用法。


一、算术操作符

算术操作符用于执行基本的数学运算,如加、减、乘、除和取余。

image.png



使用示例:

// + - * / %
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);


二、赋值操作符

赋值操作符用于将一个值赋给一个变量。

image.png

使用示例:

//赋值运算符
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);




三、比较操作符

比较操作符用于比较两个值,返回一个布尔值。

image.png



使用示例:

//比较运算符
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,不会判断第二个条件是否成立。
//用||判断时,第一个条件为真时直接返回结果为真,不会判断第二个条件。只有第一个条件为假时,才会判断第二个条件是否成立。


五、位操作符

位操作符用于执行按位操作。

image.png

补充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


六、条件操作符(三元操作符)

条件操作符用于根据条件表达式的结果返回不同的值。image.png


条件操作符可以在简单的条件判断场景下替代if - else语句,使代码更加简洁,特别是在表达式内部需要根据条件返回不同值的情况。但对于复杂的条件逻辑,if - else语句可能会更清晰易读。


使用示例:

//三元运算符 条件成立,输出第一个表达式,条件不成立输出第二个表达式
string result = 10 != 20 ? "10不等于20" : "10小于20";
Console.WriteLine(result);



七、空合并操作符

空合并操作符用于返回第一个非空的操作数。

image.png

需要注意的是,两个操作数的类型必须兼容。如果expression1的类型是可空类型,expression2的类型必须与expression1的基础类型相同或者可以隐式转换为该基础类型。例如,如果expression1int?类型,expression2可以是int类型或者可以隐式转换为int类型的值。


使用示例:

//空合并操作符 如果表达式1有值就直接输出第一个值,没有值就输出表达式2
//string name = null; //空值
string name = "张三"; 
//如果是括号括起来的内容,可以作为整体处理
string info = "欢迎你" + (name ?? "李四");
Console.WriteLine(info);


八、空条件操作符

空条件操作符用于在链式调用中优雅地处理 null 值。

在 C#中,空条件操作符(?.)用于简化对可能为null的对象成员的访问。以下是关于空条件操作符的语法表格:

image.png

这些空条件操作符可以帮助我们更安全地处理可能存在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}");
    }





留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}
×