using System; namespace Lesson10 { class program { static void Main(string[] args) { Console.WriteLine("算术运算符"); //算数运算符 是用于 数值类型变量计算的运算符 //他返回的结果是数值 #region 赋值运算符 // = 赋值运算符 // 关键知识点: // 先看右侧 再看左侧 把右侧的值赋给左侧的变量 string myName = "HK";// 先看右侧 "HK" 再看左侧 myName 把 "HK" 赋值给 myName int myAge = 18; // 先看右侧 18 再看左侧 myAge 把 18 赋值给 myAge float myHeight = 1.75f; // 先看右侧 1.75f 再看左侧 myHeight 把 1.75f 赋值给 myHeight #endregion #region 算术运算符 #region +加号运算符 // 用自己计算 先算右侧结果 再赋值给左侧变量 int i = 1; i = i + 2;//先算右侧 i + 2 = 3 再赋值给左侧 i Console.WriteLine("i = " + i); // 输出 i = 3 //连续运算 先算右侧结果 再赋值给左侧变量 i = i + 2 + 3; //先算右侧 i + 2 + 3 = 8 再赋值给左侧 i Console.WriteLine("i = " + i); // 输出 i = 8 //初始化时就运算 先算右侧结果 再赋值给左侧变量 int j = 1 + 2 + 3; //先算右侧 1 + 2 + 3 = 6 再赋值给左侧 j Console.WriteLine("j = " + j); // 输出 j = 6 #endregion #region -减号运算符 // 同加法 #endregion #region *乘号运算符 // 乘法运算符 * 用于两个数相乘 int k = 2 * 3; //先算右侧 2 * 3 = 6 再赋值给左侧 k Console.WriteLine("k = " + k); // 输出 k = 6 // 乘法也可以连续运算 k = k * 2 * 3; //先算右侧 k * 2 * 3 = 36 再赋值给左侧 k Console.WriteLine("k = " + k); // 输出 k = 36 #endregion #region /除号运算符 // 除法运算符 / 用于两个数相除 int m = 6 / 2; //先算右侧 6 / 2 = 3 再赋值给左侧 m Console.WriteLine("m = " + m); // 输出 m = 3 // 除法也可以连续运算 m = m / 2 / 3; //先算右侧 m / 2 / 3 = 0 再赋值给左侧 m Console.WriteLine("m = " + m); // 输出 m = 0 // 注意:除法运算如果除数为0,会抛出异常 try { int n = 6 / 0; //会抛出异常 } catch (DivideByZeroException ex) { Console.WriteLine("除数不能为0!" + ex.Message); } #endregion #region %取余运算符 // 取余运算符 % 用于两个数相除后,返回余数 int o = 7 % 3; //先算右侧 7 % 3 = 1 再赋值给左侧 o Console.WriteLine("o = " + o); // 输出 o = 1 o = o / 3; Console.WriteLine("o = " + o); // 输出 o = 0 // 注意:取余运算如果除数为0,会抛出异常 o = o / 3; try { int p = 7 % 0; //会抛出异常 } catch (DivideByZeroException ex) { Console.WriteLine("除数不能为0!" + ex.Message); } #endregion #endregion #region 算数运算符的 优先级 // 乘除取余运算符优先级高于加减运算符 // 先算乘除取余运算符 再算加减运算符 int a = 1 + 2 * 3 / 2 + 1;//先算右侧 2 * 3 = 6 再算 6 / 2 = 3 再算 1 + 3 + 1 = 5 Console.WriteLine(a); //括号可以改变运算顺序 int b = (1 + 2) * 3 / 2 + 1; //先算右侧 (1 + 2) = 3 再算 3 * 3 = 9 再算 9 / 2 = 4.5 再算 4.5 + 1 = 5.5 Console.WriteLine(b); //注意:括号内的运算优先级最高 //多组括号 可以嵌套运算 先算最内层括号 int c = (1 + (2 * 3)) / 2 + 1; //先算右侧 (2 * 3) = 6 再算 (1 + 6) = 7 再算 7 / 2 = 3.5 再算 3.5 + 1 = 4.5 Console.WriteLine(c); #endregion #region 算数运算符的 复合运算符号 // 复合运算符号 是对算数运算符的简化写法 // += 复合加法运算符 i += 2; //等价于 i = i + 2; 先算右侧 i + 2 = 10 再赋值给左侧 i // -= 复合减法运算符 i -= 2; //等价于 i = i - 2; 先算右侧 i - 2 = 8 再赋值给左侧 i // *= 复合乘法运算符 i *= 2; //等价于 i = i * 2; 先算右侧 i * 2 = 16 再赋值给左侧 i // /= 复合除法运算符 i /= 2; //等价于 i = i / 2; 先算右侧 i / 2 = 8 再赋值给左侧 i // %= 复合取余运算符 i %= 2;//等价于 i = i % 2; 先算右侧 i % 2 = 0 再赋值给左侧 i #endregion #region 算数运算符的 自增减 // 自增自减运算符 是对变量的值进行加1或减1的运算符 i = i + 1; i += 1; i++; ++i; //以上四种写法是等价的 //但是也有区别 i++;//表示的意思是先使用 i 的值,然后再加1 ++i;//表示的意思是先加1,然后再使用 i 的值 //自减运算符同理 #endregion } } }