了解在数值数据上用于执行基本数学运算的运算符和技术。
简介
简单的加法和隐式数据转换
步骤1:添加两个数值数据
若要将两个数字相加,我们将使用加法运算符,其为加号 +
。 没错,字符串串联使用的相同的加号 +
也用于加法。 为了多个目的重复使用一个符号有时被称为“重载运算符”,并且经常在 C# 中发生。
int firstNumber = 12;
int secondNumber = 7;
Console.WriteLine(firstNumber + secondNumber);
19
步骤2:混合数据类型以强制执行隐式类型转换
string firstName = "Bob";
int widgetsSold = 7;
Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
Bob sold 7 widgets.
步骤3:尝试添加数字和连接字符串的更高级情况
string firstName = "Bob";
int widgetsSold = 7;
Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
Bob sold 77 widgets.
步骤4:添加括号,向编译器清楚展现我们的意图
string firstName = "Bob";
int widgetsSold = 7;
Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
Bob sold 14 widgets.
回顾
主要理念:
- 可以对数字执行数学等加法运算。
- 字符串串联和加法均使用加号
+
。 这称为“重载运算符”,编译器根据其运算的数据类型推断合理的使用。 - 如果 C# 编译器意识到开发者试图连接数字的字符串表示形式来实现演示,则它会隐式将
int
转换为string
。 - 使用括号定义运算顺序,以显式指示编译器我们要在执行其他运算之前执行特定运算。
数学运算符
执行基本的数学运算
步骤1-编写代码以用整数执行加法、减法、乘法和除法运算。
int sum = 7 + 5;
int difference = 7 - 5;
int product = 7 * 5;
int quotient = 7 / 5;
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Difference: " + difference);
Console.WriteLine("Product: " + product);
Console.WriteLine("Quotient: " + quotient);
Sum: 12
Difference: 2
Product: 35
Quotient: 1
+ 是加法运算符
- 是减法运算符
* 是乘法运算符
/ 是除法运算符
步骤2-使用文本小数数据添加代码以执行除法。
要查看除法是否正确有效,我们需要使用支持小数点后的小数位的数据类型,如 decimal
。
decimal decimalQuotient = 7.0m / 5;
Console.WriteLine("Decimal quotient: " + decimalQuotient);
Decimal quotient: 1.4
为了使其正常运作,商(赋值运算符的左边)必须是类型 decimal
以及被除数或除数必须为类型 decimal
(或两者都为该类型)。
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
步骤3-使用文本小数数据添加代码以执行除法
要将 int
强制转换为 decimal
,请在值之前添加强制转换运算符。 使用在值前面加括号括起来的数据类型名称来强制转换该数据类型。
int first = 7;
int second = 5;
decimal quotient = (decimal)first / (decimal)second;
Console.WriteLine(quotient);
1.4
步骤4-编写代码以确定整数相除后的余数
余数运算符 %
指示 int
相除后的余数。
Console.WriteLine("Modulus of 200 / 5 : " + (200 % 5));
Console.WriteLine("Modulus of 7 / 5 : " + (7 % 5));
Modulus of 200 / 5 : 0
Modulus of 7 / 5 : 2
当模数为 0 时,表示被除数除以除数。
运算顺序
在数学中,PEMDAS 是一个首字母缩略词,有助于学生记住执行多个运算的顺序。 此顺序为:
- 圆括号 (P)(括号内的内容首先执行)
- 指数 (E)
- 乘法 (M) 和除法 (D)(从左至右)
- 加法 (A) 和减法 (S)(从左至右)
C# 遵循与 PEMDAS 相同的顺序,但指数除外。 虽然在 C# 中没有指数运算符,但可以使用 System.Math.Pow()
方法,此方法可从 .NET 类库中获得。
步骤4-编写代码以执行C#的运算顺序
int value1 = 3 + 4 * 5;
int value2 = (3 + 4) * 5;
Console.WriteLine(value1);
Console.WriteLine(value2);
23
35
回顾
- 使用如
+
、-
、*
和/
的运算符来执行基本数学运算。 - 两个
int
值相除,得到小数点后的任意值被截断的结果。 要保留小数点后面的值,需要先将除数或被除数(或两者)由int
强制转换为浮点数,如decimal
,然后为了避免截断,商必须是相同的浮点类型。 - 执行强制转换操作,将值暂时视为不同的数据类型。
- 使用
%
运算符捕获相除后的余数。 - 操作顺序将遵循首字母缩略词 PEMDAS 的规则。
递增和递减值
递增和递减
通常,你需要递增和递减一个值,尤其是在使用任意循环逻辑或与数据结构交互的代码时,这些数据结构包含多个数据元素。
+=
运算符会将其右侧的值与左侧的值相加,并进行赋值。
int value = 0;
value = value + 5;
value += 5;
++
运算符将变量的值增加 1。
int value = 0;
value = value + 1;
value++;
步骤1-编写代码以递增和递减值。
int value = 1;
value = value + 1;
Console.WriteLine("First increment: " + value);
value += 1;
Console.WriteLine("Second increment: " + value);
value++;
Console.WriteLine("Third increment: " + value);
value = value - 1;
Console.WriteLine("First decrement: " + value);
value -= 1;
Console.WriteLine("Second decrement: " + value);
value--;
Console.WriteLine("Third decrement: " + value);
First increment: 2
Second increment: 3
Third increment: 4
First decrement: 3
Second decrement: 2
Third decrement: 1
定位增量和减量运算符
步骤2-在值前后使用增量运算符。
int value = 1;
value++;
Console.WriteLine("First: " + value);
Console.WriteLine("Second: " + value++);
Console.WriteLine("Third: " + value);
Console.WriteLine("Fourth: " + (++value));
First: 2
Second: 2
Third: 3
Fourth: 4
回顾
- 使用复合赋值运算符(如
+=
、-=
、*=
、++
和--
)执行数学运算(如递增或递减),然后将结果赋给原始变量。 - 增量和减量运算符的执行方式不同,具体取决于运算符是在操作数之前还是之后。
int fahrenheit = 94;
decimal celsius = (fahrenheit - 32m) * (5m / 9m);
Console.WriteLine("The temperature is " + celsius + " Celsius.");
The temperature is 34.444444444444444444444444447 Celsius.