news 2026/11/4 2:13:01

C# 系列教程_6 运算符 系统精讲(新手友好・详尽版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 系列教程_6 运算符 系统精讲(新手友好・详尽版)

运算符(Operator)就是用来对数据执行运算、比较、判断的符号。参与运算的数据叫做操作数。

例:int a = 1 + 2;

  • +:运算符
  • 1和2:操作数
  • 1 + 2:表达式(Expression),表达式运算后会产生一个结果值。

C# 运算符分类:

  1. 算术运算符(加减乘除、取余、自增自减)
  2. 赋值运算符(=、+=、-=等复合赋值)
  3. 关系(比较)运算符(大于小于等于,返回 bool)
  4. 逻辑运算符(与、或、非,用于多条件判断)
  5. 三元运算符(?:,简单 if 简写)
  6. 其他常用运算符:is、as、typeof、.成员访问、括号()最后:运算符优先级(⭐重点,新手极易出错)

学习思路:逐个学习,看示例,拆解机理,区分容易踩坑点,最后掌握优先级。


1. 算术运算符

用于数值计算,操作数一般是 int、double、decimal 等数字类型。

符号名称作用
+加求和
-减求差
*乘求积
/除求商
%取余(模)求除法余数
++自增变量 + 1
--自减变量 - 1

示例 1:加减乘除,整数除法大坑

using System; namespace OperatorDemo { class Program { static void Main(string[] args) { int a = 5; int b = 2; Console.WriteLine(a + b); //7 Console.WriteLine(a - b); //3 Console.WriteLine(a * b); //10 Console.WriteLine(a / b); //⭐重点!输出2,不是2.5 } } }

机理拆解

a和b都是 int 整数,整数除以整数,结果仍然是 int,直接舍弃小数部分,不四舍五入。 想要得到小数结果,必须把其中一个操作数转为浮点类型:

int a = 5; int b = 2; double res = (double)a / b; Console.WriteLine(res); //输出2.5

原理:(double)a把 a 转为 double,b会隐式转换成 double,变成浮点除法。

示例 2:取余 % 模运算

int a = 7; int b = 3; Console.WriteLine(a % b); //1,7除以3商2,余数1

✅ 常用场景:

  • 判断数字奇偶:num % 2 == 0偶数;
  • 循环周期,比如每 5 个换行。
int num = 4; Console.WriteLine(num % 2); //0 → 偶数

示例 3:自增 ++ 、自减 --(前 ++ 和后 ++ 核心难点)

++:变量自身 +1;--:变量自身 -1。

  • 后置i++:先使用变量原值参与运算,运算结束后变量 + 1
  • 前置++i:变量先 + 1,再使用新值参与运算
static void Main() { int i = 10; int res1 = i++; //后置++ Console.WriteLine($"res1={res1}, i={i}"); // res1=10,i=11 int j = 10; int res2 = ++j; //前置++ Console.WriteLine($"res2={res2}, j={j}"); // res2=11,j=11 }

机理拆解

  1. int res1 = i++;
    • 第一步:把 i 当前的值 10 拿出来,赋值给 res1;
    • 第二步:i 自增,i 变成 11。
  2. int res2 = ++j;
    • 第一步:j 自增变成 11;
    • 第二步:把 j 新值 11 赋值给 res2。

单独一行写i++;和++i;效果完全一样,没有任何区别。只有在表达式里面参与赋值 / 打印的时候,才会出现差异。

int i = 5; i++; //单独一行,等价 ++i; Console.WriteLine(i); //6

2. 赋值运算符

=是赋值运算符,不是数学等于号!

=含义:把右边表达式的结果,存入左边变量的内存空间。 ⚠️ 左边必须是变量,不能是数字或者常量。

基础赋值

int a; a = 10; // 将10存入变量a

复合赋值运算符(简写)

符号等价写法
+=a = a + b
-=a = a - b
*=a = a * b
/=a = a / b
%=a = a % b

示例

static void Main() { int score = 60; score += 10; //等价 score = score + 10; Console.WriteLine(score); //70 score -= 5; Console.WriteLine(score); //65 }

复合赋值底层自带隐式类型转换,部分场景可以少写强制转型,新手先记住是简写语法。


3. 关系(比较)运算符

比较两个数据大小、是否相等;运算结果一定是 bool 类型:true /false。

符号含义
>大于
<小于
>=大于等于
<=小于等于
==等于判断(两个等号!)
!=不等于

⚠️ 超级大坑:=赋值;==判断相等,千万不要写混!

示例

static void Main() { int a = 10; int b = 20; Console.WriteLine(a > b); //false Console.WriteLine(a < b); //true Console.WriteLine(a == 10);//true Console.WriteLine(a != b); //true }

机理:拿左右两个操作数对比,满足条件返回 true,不满足返回 false。返回的布尔值,最常用在 if 判断条件。

int age = 18; if(age >= 18) { Console.WriteLine("成年"); }

字符串比较:==可以用来判断字符串内容是否相等

string s1 = "abc"; string s2 = "abc"; Console.WriteLine(s1 == s2); //true

4. 逻辑运算符:多个条件组合判断

操作数是 bool 类型(true/false),结果也为 bool。

符号名称规则
&&逻辑与(短路与)左右都 true,结果才 true;有一个 false 直接 false
||逻辑或(短路或)任意一个 true,结果 true;全 false 才 false
!逻辑非(取反)true 变 false,false 变 true

✅&&和||是短路运算(C# 默认):一旦能确定最终结果,后面表达式不再执行!这是高频考点。

示例 1:逻辑与 &&

int age = 20; int score = 80; bool res = age >= 18 && score >=60; Console.WriteLine(res); //true

条件:年龄大于等于 18,并且分数≥60,两个条件同时成立。

短路演示:

int a = 10; bool result = a < 5 && ++a > 0; Console.WriteLine(result); //false Console.WriteLine(a); //10! ++a 根本没有执行!

机理:a<5结果是 false,&&只要左边 false,整体一定 false,右边直接跳过不执行,a 不会自增。

示例 2:逻辑或 ||

int score = 95; bool res = score >=90 || score < 60; Console.WriteLine(res); //true

只要任意一个条件成立,整体 true。

短路演示:

int a = 10; bool result = a >5 || ++a >0; Console.WriteLine(result); //true Console.WriteLine(a); //10,右边++a不执行

左边已经 true,||直接判定整体 true,后面代码不跑。

示例 3:逻辑非!

bool isOk = false; Console.WriteLine(!isOk); //true

取反,把真假翻转。常用于取反判断:if(!isStudent)如果不是学生。

补充:&和|(不短路逻辑运算),新手初学很少用,不管左边结果如何,左右两边全部执行。日常条件判断一律用&&和||。


5. 三元运算符?:

唯一的三元运算符:需要 3 个操作数。 语法模板:

条件表达式 ? 条件为true时的值 : 条件为false时的值;

作用:简单 if else 的简写,返回一个结果,适合简单二选一赋值。

示例

static void Main() { int score = 70; string result = score >=60 ? "及格" : "不及格"; Console.WriteLine(result); //及格 }

机理拆解

  1. 先执行问号前面的条件score >=60;
  2. 如果条件 true,取冒号:左边的值;
  3. 如果条件 false,取冒号:右边的值;
  4. 将得到的字符串赋值给 result 变量。

限制:适合简单判断,不要多层嵌套三元运算符,代码可读性会很差。


6. 其他常用运算符简介

  1. .成员访问运算符:访问类的字段、方法
Console.WriteLine("hi"); // .访问Console类的WriteLine方法
  1. ()括号运算符:提高优先级,改变运算顺序
  2. is:判断对象是否属于某个类型,返回 bool
object obj = "123"; if(obj is string) { Console.WriteLine("是字符串"); }
  1. as:引用类型安全转换,失败返回 null
object obj = "test"; string str = obj as string;

7. 运算符优先级(⭐重中之重)

优先级越高,越先计算。括号()优先级最高,可以强制改变运算顺序!

从高到低,只列出现阶段常用:

  1. ()括号
  2. ++、--自增自减(前置 / 后置),!取反
  3. */%乘除取余
  4. +-加减
  5. ><>=<=比较
  6. ==!=相等判断
  7. &&逻辑与
  8. ||逻辑或
  9. ?:三元运算符
  10. =+=-=赋值(优先级最低)

示例:优先级演示

int res = 10 + 2 * 5; Console.WriteLine(res); //20,先算乘法2*5,再加10

加括号改变顺序:

int res = (10 + 2) * 5; Console.WriteLine(res); //60,括号优先执行

新手建议:不确定优先级的时候,直接加括号,可读性最好,不容易踩坑。


8. 新手高频坑汇总

  1. 整数 / 整数,结果仍然是整数,直接丢掉小数,不是四舍五入;需要小数,强制转浮点。
  2. =赋值,==相等判断,if 条件里千万不要写成if(a=10)(编译报错或者逻辑错误)。
  3. ++后置和前置,只有在表达式参与运算时才有区别,单独一行无差别。
  4. &&、||短路运算,满足条件后右侧代码不会执行,右侧自增等代码不会跑。
  5. 比较运算符连写错误:if(10 < a <20)不可以!C# 不能这么写,必须写成if(a>10 && a<20)。
  6. 优先级不确定,优先加括号,不要凭数学直觉。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/4 2:10:28

告别 Node 环境难题!Codex 一键安装包完整实操教程

前言 相比手动安装 Node.js、再逐条敲命令&#xff0c;一键安装包已经把环境配置、依赖安装和客户端部署全部打包好&#xff0c;省去了繁琐的搭建步骤&#xff0c;特别适合不想折腾、希望快速上手的用户。整个过程中只需按提示操作&#xff0c;几分钟就能开始使用。 一、下载…

作者头像 李华
网站建设 2026/11/4 2:06:45

用C++11开发PHP 7扩展:ppts_for_php2017韩天峰77页完整教程详解

【免费下载链接】ppts_for_php2017 2017 第三届PHP全球开发者大会PPT/Keynote 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ppt/ppts_for_php2017 点击查看 免费下载 本文带你吃透 ppts_for_php2017 开源仓库中收录的 77 页演讲 PPT——《使用C11开发PHP7扩展》&…

作者头像 李华