表达式:正如字面意义,它是通过算术运算符来进行运算的数学公式。表达式的意义我们都是很明白的,大白话就是一个公式嘛。不是很难懂。
表达式不是一个单独的存在,必然有操作数或者操作符的。在c#中有操作符有很多,下表所示 c#中的操作符的类型。而操作数是什么呢? 就是在表达式中的数值或者对象
今天我们先说一下算术运算符。 何为算术运算符?就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。
今天我们说的运算符都都有哪些呢?
下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
运算符 | 类别 | 描述 | 实例 |
---|---|---|---|
+ | 二元 | 把两个操作数相加 | A + B 将得到 30 |
- | 二元 | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 二元 | 把两个操作数相乘 | A * B 将得到 200 |
/ | 二元 | 分子除以分母 | B / A 将得到 2 |
% | 二元 | 取模运算符,整除后的余数 | B % A 将得到 0 |
+[前缀] | 一元 | 数值等于操作数 | A=+A 将得到10 |
-[前缀] | 一元 | 数值等于操作数-1 | A =- A 将得到 9 |
++ | 一元 | 自增运算符,整数值增加 1 | A++ 将得到 11 |
-- | 一元 | 自减运算符,整数值减少 1 | A-- 将得到 9 |
++[前缀] | 一元 | 自增运算符,整数值增加 1 | ++A 将得到 11 |
--[前缀] | 一元 | 自减运算符,整数值减少 1 | --A 将得到 9 |
这个列表中,到取余计算符时,我们都还是很明白的,就是正常的数学计算符。往后就是编程语言内的计算符。如果假装理解操作符还是可以的,但是这个类别是什么意思可就真心不太明白了。
这个类别是什么意思呢?
是把运算计算符分为三个类别的。 如图
类别 | 解释 |
---|---|
一元 | 处理一个操作数 |
二元 | 处理二个操作数 |
三元 | 处理三个操作数 |
大多数的运算符都是二元运算符,只有几个一元运算符和一个三元运算符。计算运算符属于一元运算符和二元运算符。
揭示了何为类别,何为一元二元,那么解释后面不太明白的++,-- 前缀+ -的运算符了。正如列表中一样,++ --这两个运算符属于自增自减运算符。 给出两个例子
int var1=1, var=2,var3=0; var1++; var2--;
运行这个两个表达式,var1=2,var2=1。这是放在后面时候的运算。 列表中还给出了前缀的自增自减。这两个有什么不同嘛?
不同之处在于,自增自减运算符放在操作数前时操作数在受其他运算符影响前时先受其前缀的自增自减运算符影响,放在后面时只有当表达式完成时操作数采受运算符的影响。
列子:
int var1,var2=5,var3=6; var1=var2++*--var3;
先不着急上机运算,猜猜看这个var1等于多少? 25!为什么是25呢?正如我上面说了【自增自减运算符放在操作数前时操作数在受其他运算符影响前时先受其前缀的自增自减运算符影响】也就是先是运算--var3=5,在运算 乘法,也就是5*5=25,此时的放在自增自减的运算符后面的操作数只有当表达式完成后在受其影响,也即是之际被忽略了.
最后说一下优先级,在算术运算符中的优先级别
类别 | 运算符 | 结合性 |
---|---|---|
前缀 | ++ - -和 + - | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
后缀 | ++ - - | 从左到右 |