C#(Csharp)-运算符

运算符:就是告诉编译器执行特定的数学逻辑操作的符号

表达式

  • 定义:表达式是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
  • 类型:表达式也是值类型。

算术运算符 


+ - * / % 

特点

  • 两个整数相除得到的结果一定是整数(取整数部分)。
  • 除数和取余运算中,不能使用0作为除数。
  • 小数可以除以0,结果为无穷大;对0取余得到NaN(不是一个数字)。

示例代码

using System;

class Program
{
    static void Main()
    {
        // 声明变量
        int a = 10;
        int b = 3;

        // 加法
        int sum = a + b;
        Console.WriteLine($"加法: {a} + {b} = {sum}");

        // 减法
        int difference = a - b;
        Console.WriteLine($"减法: {a} - {b} = {difference}");

        // 乘法
        int product = a * b;
        Console.WriteLine($"乘法: {a} * {b} = {product}");

        // 整数除法
        int quotient = a / b;
        Console.WriteLine($"整数除法: {a} / {b} = {quotient}");

        // 取模(余数)
        int remainder = a % b;
        Console.WriteLine($"取模: {a} % {b} = {remainder}");

        // 小数除法
        double quotientDouble = (double)a / b;
        Console.WriteLine($"小数除法: {a} / {b} = {quotientDouble}");

    }
}

 

输出结果

当你运行这段代码时,它将输出:

加法: 10 + 3 = 13
减法: 10 - 3 = 7
乘法: 10 * 3 = 30
整数除法: 10 / 3 = 3
取模: 10 % 3 = 1
小数除法: 10 / 3 = 3.3333333333333335
自增: 11
自减: 10

代码解释

  1. 声明变量

    • int a = 10; 和 int b = 3;:这两行代码声明了两个整数变量 a 和 b,并分别赋值为 10 和 3。
  2. 算术运算

    • 加法int sum = a + b; 计算 a 和 b 的和。
    • 减法int difference = a - b; 计算 a 减去 b 的差。
    • 乘法int product = a * b; 计算 a 和 b 的积。
    • 整数除法int quotient = a / b; 计算 a 除以 b 的商(整数部分)。
    • 取模int remainder = a % b; 计算 a 除以 b 的余数。
    • 小数除法double quotientDouble = (double)a / b; 计算 a 除以 b 的商(浮点数)。

赋值运算符


+=, -=, *=, /=, %=:中间不能加空格,他们是一个整体

这些运算符用于简化赋值表达式,例如 a += b 等价于 a = a + b

 示例代码

using System;

class Program
{
    static void Main()
    {
        // 声明变量
        int a = 10;
        int b = 5;

        // 简单赋值
        int c = a;
        Console.WriteLine($"简单赋值: c = {c}");

        // 复合赋值运算符
        a += b; // 等价于 a = a + b
        Console.WriteLine($"a += b: a = {a}");

        a -= b; // 等价于 a = a - b
        Console.WriteLine($"a -= b: a = {a}");

        a *= b; // 等价于 a = a * b
        Console.WriteLine($"a *= b: a = {a}");

        a /= b; // 等价于 a = a / b
        Console.WriteLine($"a /= b: a = {a}");

        a %= b; // 等价于 a = a % b
        Console.WriteLine($"a %= b: a = {a}");
    }
}

输出结果

当你运行这段代码时,它将输出:

简单赋值: c = 10
a += b: a = 15
a -= b: a = 10
a *= b: a = 50
a /= b: a = 10
a %= b: a = 0

代码解释

  1. 声明变量

    • int a = 10; 和 int b = 5;:这两行代码声明了两个整数变量 a 和 b,并分别赋值为 10 和 5。
  2. 简单赋值

    • int c = a;:这行代码将变量 a 的值赋给变量 c
  3. 复合赋值运算符

    • 加法赋值a += b; 等价于 a = a + b; 计算 a 加上 b 的结果,并将结果赋给 a
    • 减法赋值a -= b; 等价于 a = a - b; 计算 a 减去 b 的结果,并将结果赋给 a
    • 乘法赋值a *= b; 等价于 a = a * b; 计算 a 乘以 b 的结果,并将结果赋给 a
    • 除法赋值a /= b; 等价于 a = a / b; 计算 a 除以 b 的结果,并将结果赋给 a
    • 取模赋值a %= b; 等价于 a = a % b; 计算 a 除以 b 的余数,并将结果赋给 a

注意事项

  • 复合赋值运算符可以简化代码,使代码更加简洁。
  • 复合赋值运算符中的运算符(如 +-*/%)遵循算术运算符的规则

++ ,-- 


自加1,自减1
a = ++b, a= b++ 区别
1. ++ 在变量后跟着,先赋值,在++(自加1)
2. ++ 在变量前跟着,先++(自加1),再赋值,
++:自增,自身加一;++在前表示先让该变量加一,再让其参与运算。++在后表示先让该变量参与运
算,再让其加一。
-- :自减, 自身减一;--在前表示先让该变量减一,再让其参与运算。--在后表示先让该变量参与运
算,再让其减一。

示例代码

//++ --
//自加1 自减1
int a = 10;
int b = ++a;
Console.WriteLine(b);
Console.WriteLine(a);
int c = 11;
int d = c++; // d=11 c+1
int e = ++c;
Console.WriteLine(e);//13

 比较运算符(关系运算符)


  • <, >, <=, >=, ==, !=:返回布尔值,用于比较两个值的大小或相等性。
using System;

class Program
{
    static void Main()
    {
        // 声明变量
        int a = 10;
        int b = 5;

        // 比较运算符
        bool isGreaterThan = a > b;
        Console.WriteLine($"a > b: {isGreaterThan}");

        bool isLessThan = a < b;
        Console.WriteLine($"a < b: {isLessThan}");

        bool isGreaterThanOrEqual = a >= b;
        Console.WriteLine($"a >= b: {isGreaterThanOrEqual}");

        bool isLessThanOrEqual = a <= b;
        Console.WriteLine($"a <= b: {isLessThanOrEqual}");

        bool isEqual = a == b;
        Console.WriteLine($"a == b: {isEqual}");

        bool isNotEqual = a != b;
        Console.WriteLine($"a != b: {isNotEqual}");
    }
}

输出结果

当你运行这段代码时,它将输出:
 

a > b: True
a < b: False
a >= b: True
a <= b: False
a == b: False
a != b: True

代码解释

  1. 声明变量

    • int a = 10; 和 int b = 5;:这两行代码声明了两个整数变量 a 和 b,并分别赋值为 10 和 5。
  2. 比较运算符

    • 大于a > b 检查 a 是否大于 b
    • 小于a < b 检查 a 是否小于 b
    • 大于等于a >= b 检查 a 是否大于等于 b
    • 小于等于a <= b 检查 a 是否小于等于 b
    • 等于a == b 检查 a 是否等于 b
    • 不等于a != b 检查 a 是否不等于 b
  3. 布尔结果

    • 每个比较运算符的结果都被赋给了一个布尔变量,并打印出来。

注意事项

  • 比较运算符返回布尔值 true 或 false
  • 这些运算符可以用于任何可以比较的数据类型,如整数、浮点数、字符串等。

三目运算符

  • 格式条件表达式 ? 值1 : 值2
    • 如果条件表达式的值为true,则返回值1;否则返回值2

示例代码 
 

using System;

class Program
{
    static void Main()
    {
        // 声明变量
        int age = 18;
        int temperature = 25;

        // 判断是否成年
        string adultStatus = age >= 18 ? "成年" : "未成年";
        Console.WriteLine($"年龄为 {age} 岁,状态为:{adultStatus}");

        // 根据温度判断天气
        string weather = temperature < 10 ? "寒冷" : (temperature >= 10 && temperature <= 20) ? "凉爽" : "温暖";
        Console.WriteLine($"温度为 {temperature} 度,天气为:{weather}");
    }
}

输出结果

当你运行这段代码时,它将输出:
 

年龄为 18 岁,状态为:成年
温度为 25 度,天气为:温暖

代码解释

  1. 声明变量

    • int age = 18;:声明一个整数变量 age 并赋值为 18。
    • int temperature = 25;:声明一个整数变量 temperature 并赋值为 25。
  2. 三目运算符

    • 判断是否成年string adultStatus = age >= 18 ? "成年" : "未成年"; 检查年龄是否大于等于 18 岁,如果是,则返回 "成年";否则返回 "未成年"。
    • 根据温度判断天气string weather = temperature < 10 ? "寒冷" : (temperature >= 10 && temperature <= 20) ? "凉爽" : "温暖"; 根据温度判断天气状况,如果温度低于 10 度,则返回 "寒冷";如果温度在 10 到 20 度之间,则返回 "凉爽";否则返回 "温暖"。
  3. 输出结果

    • 打印年龄状态和天气情况。

注意事项

  • 三目运算符可以用于任何类型的值,只要这些值可以相互转换。
  • 三目运算符的结果必须是一个确定的类型,例如字符串或整数。
  • 三目运算符可以嵌套使用,以实现更复杂的条件判断。

逻辑运算符


  • &(与)、|(或)、&&(短路与)、||(短路或)、!(非)
    • & 和 | 总是执行两边的表达式。
    • && 和 || 发生短路,如果第一个表达式就能确定结果,则不会执行第二个表达式。

&:T&T=T T&F=F F&T=F F&F=F;两边表达式都会执行;两边都是真,整体才是真。
|:T|T=T T|F=T F|T=T F|F=F;两边表达式都会执行;两边有一个真,整体就是真。
&&:T&&T=T T&&F=F F&&T=F F&&F=F;会发生短路,前面如果是 F 那么后面表达式不执行;两
边都是真,整体才是真。
||:T||T=T T||F=T F||T=T F||F=F;会发生短路,前面如果是 T 那么后面表达式不执行;两边有
一个真,整体就是真。
!:!T=F !F=T;取反操作 

 示例代码
 

using System;

class Program
{
    static void Main()
    {
        // 声明变量
        bool isAdult = true;
        bool hasLicense = false;
        int age = 18;
        int temperature = 25;

        // 逻辑与运算符 (& 和 &&)
        bool canDrive = isAdult & hasLicense;
        Console.WriteLine($"可以开车: {canDrive}");

        bool canDriveShortCircuit = isAdult && hasLicense;
        Console.WriteLine($"可以开车 (短路): {canDriveShortCircuit}");

        // 逻辑或运算符 (| 和 ||)
        bool isColdOrHot = temperature < 10 | temperature > 30;
        Console.WriteLine($"天气寒冷或炎热: {isColdOrHot}");

        bool isColdOrHotShortCircuit = temperature < 10 || temperature > 30;
        Console.WriteLine($"天气寒冷或炎热 (短路): {isColdOrHotShortCircuit}");

        // 逻辑非运算符 (!)
        bool isNotAdult = !isAdult;
        Console.WriteLine($"不是成年人: {isNotAdult}");

        // 使用逻辑运算符进行更复杂的条件判断
        bool isEligibleForDiscount = (age >= 65 || age <= 12) && temperature >= 20;
        Console.WriteLine($"符合条件享受折扣: {isEligibleForDiscount}");
    }
}

输出结果

当你运行这段代码时,它将输出:
 

可以开车: False
可以开车 (短路): False
天气寒冷或炎热: False
天气寒冷或炎热 (短路): False
不是成年人: False
符合条件享受折扣: False

代码解释

  1. 声明变量

    • bool isAdult = true;:声明布尔变量 isAdult 并赋值为 true
    • bool hasLicense = false;:声明布尔变量 hasLicense 并赋值为 false
    • int age = 18;:声明整数变量 age 并赋值为 18。
    • int temperature = 25;:声明整数变量 temperature 并赋值为 25。
  2. 逻辑运算符

    • 逻辑与运算符
      • &:执行两边的表达式,只有两边都是 true 时结果才为 true
      • &&:发生短路,如果第一个表达式为 false,则不会执行第二个表达式。
    • 逻辑或运算符
      • |:执行两边的表达式,只要有一边为 true,结果就为 true
      • ||:发生短路,如果第一个表达式为 true,则不会执行第二个表达式。
    • 逻辑非运算符
      • !:取反操作,将 true 变为 falsefalse 变为 true
  3. 布尔结果

    • 每个逻辑运算符的结果都被赋给了一个布尔变量,并打印出来。

注意事项

  • & 和 | 总是执行两边的表达式。
  • && 和 || 会发生短路行为,如果第一个表达式就能确定结果,则不会执行第二个表达式。
  • 逻辑运算符可以用于复杂的条件判断,以决定程序的流程。

运算符优先级


  • 从高到低
    1. 成员访问 ., 圆括号 (), 大括号 {}, 分号 ;
    2. 自增自减 ++--, 逻辑非 !
    3. 乘法 /, 除法 *, 取模 %
    4. 加法 +, 减法 -
    5. 关系运算 <><=>=
    6. 等于 ==, 不等于 !=
    7. 位与 &
    8. 位或 |
    9. 逻辑与 &&
    10. 逻辑或 ||
    11. 三目运算符 ?:

数学运算


  • Math 类:C#内置的类,提供了一些数学运算的函数,如绝对值、取整、最大值、最小值等。

示例代码
 

using System;

class Program
{
    static void Main()
    {
        // 声明变量
        int number = -33;
        double value = 3.4;

        // 数学运算
        double absoluteValue = Math.Abs(number);
        Console.WriteLine($"绝对值: {absoluteValue}");

        double roundedValue = Math.Round(value);
        Console.WriteLine($"四舍五入: {roundedValue}");

        double floorValue = Math.Floor(value);
        Console.WriteLine($"向下取整: {floorValue}");

        double ceilingValue = Math.Ceiling(value);
        Console.WriteLine($"向上取整: {ceilingValue}");

        double maxValue = Math.Max(10, 30);
        Console.WriteLine($"最大值: {maxValue}");

        double minValue = Math.Min(10, 30);
        Console.WriteLine($"最小值: {minValue}");

        double powerValue = Math.Pow(2, 4);
        Console.WriteLine($"幂运算 (2^4): {powerValue}");

        double squareRoot = Math.Sqrt(9);
        Console.WriteLine($"开平方根: {squareRoot}");

        double pi = Math.PI;
        Console.WriteLine($"圆周率 π: {pi}");

        // 获取数值类型的最大值和最小值
        long maxIntValue = long.MaxValue;
        Console.WriteLine($"整数类型最大值: {maxIntValue}");

        double maxDoubleValue = double.MaxValue;
        Console.WriteLine($"双精度浮点数类型最大值: {maxDoubleValue}");

        long minIntValue = long.MinValue;
        Console.WriteLine($"整数类型最小值: {minIntValue}");

        double minDoubleValue = double.MinValue;
        Console.WriteLine($"双精度浮点数类型最小值: {minDoubleValue}");

        // 负无穷大和正无穷大
        double negativeInfinity = double.NegativeInfinity;
        Console.WriteLine($"负无穷大: {negativeInfinity}");

        double positiveInfinity = double.PositiveInfinity;
        Console.WriteLine($"正无穷大: {positiveInfinity}");
    }
}

输出结果

当你运行这段代码时,它将输出:
 

绝对值: 33
四舍五入: 3
向下取整: 3
向上取整: 4
最大值: 30
最小值: 10
幂运算 (2^4): 16
开平方根: 3
圆周率 π: 3.14159265358979
整数类型最大值: 9223372036854775807
双精度浮点数类型最大值: 1.79769313486232E+308
整数类型最小值: -9223372036854775808
双精度浮点数类型最小值: -1.79769313486232E+308
负无穷大: -∞
正无穷大: ∞

 

代码解释

  1. 声明变量

    • int number = -33;:声明整数变量 number 并赋值为 -33。
    • double value = 3.4;:声明双精度浮点数变量 value 并赋值为 3.4。
  2. 数学运算

    • 绝对值Math.Abs(number) 计算 number 的绝对值。
    • 四舍五入Math.Round(value) 对 value 进行四舍五入。
    • 向下取整Math.Floor(value) 对 value 向下取整。
    • 向上取整Math.Ceiling(value) 对 value 向上取整。
    • 最大值Math.Max(10, 30) 计算 10 和 30 中的最大值。
    • 最小值Math.Min(10, 30) 计算 10 和 30 中的最小值。
    • 幂运算Math.Pow(2, 4) 计算 2 的 4 次幂。
    • 开平方根Math.Sqrt(9) 计算 9 的平方根。
    • 圆周率Math.PI 获取圆周率 π 的值。
  3. 数值类型的最大值和最小值

    • long.MaxValue 和 long.MinValue 获取整数类型的最大值和最小值。
    • double.MaxValue 和 double.MinValue 获取双精度浮点数类型的最大值和最小值。
  4. 无穷大

    • double.NegativeInfinity 获取负无穷大。
    • double.PositiveInfinity 获取正无穷大。

注意事项

  • Math 类提供了许多静态方法,用于执行数学运算。
  • 数值类型的最大值和最小值可以帮助确定数值的有效范围。
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值