• 运算符之算术运算符、关系运算符、逻辑运算符、复合赋值运算符、其他运算符


    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:
    算术运算符
    关系运算符
    逻辑运算符
    复合赋值运算符
    位运算符
    其他运算符
    运算符优先级(由高到低)

    类别运算符结合性
    后缀()[]->.++--从左到右
    一元=-!~ ++ -- (type)* & sizeof从右到左
    乘除* / %从左到右
    加减+ -从左到右
    移位<<  >>从左到右
    关系< <= > >=从左到右
    相等==         !=从左到右
    位与AND&从左到右
    位异或XOR

    ^

    从左到右
    位或OR|从左到右
    逻辑与AND&&从左到右
    逻辑或OR||从左到右
    条件?:从右到左

    一、算术运算符

    算术运算符又分为一元运算符和二元运算符。

    一元:++、--:对于向加加或者减减这样只需要一个操作数就能完成的运算,称为一元运算符。

    二元:*、/、%、+、-、=:对于这些需要两个或以上才能完成运算操作符,称为二元运算符。

    运算符描述
    +加运算符
    -减运算符
    ++增量运算符
    --减量运算符
    *乘法运算符
    /除法运算符
    %余数运算符
    =赋值运算符

    =赋值运算符

    int a = 10;//将10赋值给整形a变量

    bool b = true;//将true赋值给布尔b变量

    +加运算符

    int a = 5;

    int b = 12;

    int c = a + b;

    Console.WriteLine(c);//输出结果:17

    -运算符

    int a = 19;

    int b = 12;

    int c = a - b;

    Console.WriteLine(c);//输出结果:7

    *乘法运算符

    int a = 5;

    int b = 10;

    int c = a * b;

    Console.WriteLine(c);//输出结果:50

    /除法运算符

    int a = 10;

    int b = 5;

    int c = a / b;

    Console.WriteLine(c);//输出结果:2

    Console.WriteLine(b/a);//输出结果:0

    double ab = 2.2;

    Console.WriteLine(ab / 2);//输出结果:1.1

    %求余运算符

    int a = 10;

    int b = 3;

    int c = a%b;

    Console.WriteLine(c);//输出结果:1

    Console.WriteLine(a / b);//输出结果:0

    //注意求余,一般仅限于 整形类型(short,int,long)

     ++自增运算符

    int iu = 10;

    iu++;//iu = 11, iu = iu + 1;

    ++iu;//iu = 12, iu = iu + 1;

    i++与++i的区别

    int a = 10;

    int b = a++;//b=10

    Console.WriteLine($"a的值={a},b的值={b}");//输出结果:a=11 b=10

    int a = 10;

    int b = ++a;//b=11 a=11

    Console.WriteLine($"a的值={a},b的值={b}");//输出结果:a=11 b=11

    --自减运算符

    int i = 10;

    i--;//i = 9 i = i -1;

    --i;//i = 8 i = i -1 ;

    i--与--i与i++,++i一样

    二、关系运算符
    下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
     

    运算符描述实例
    ==检查两个操作数的值是否相等,如果相等则条件为真A==B不为真
    !=检查两个操作数的值是否相等,如果不相等则为真A!=B为真
    >检查左操作数的值是否大于右操作数的值,如果是则条件为真A>B不为真
    <检查左操作数的值是否小于右操作数的值,如果是则条件为真A
    >=检查左操作数的值是否大于等于右操作数的值,如果是则条件真A>=B不为真
    <=检查左操作数的值是否小于等于右操作数的值,如果是则条件真A<=为真

    三、逻辑运算符

    下表显示了 C# 支持的所有逻辑运算符。假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:

    运算符描述实例
    &&称为逻辑与运算符。如果两个操作数都是非零,则条件为真。A&&B为真
    ||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真A||B为真
    !称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真非运算符将使其为假!(A&&B)为真

    四、赋值运算符
    下表列出了 C# 支持的赋值运算符:
     

    运算符描述实例
    =简单的赋值运算符,把右边操作数的值赋给左边操作数C=A+B将A+B的值赋给C
    +=加且赋值运算符,把右边操作数加上左边操作数的结果赋给左边操作数C+=A相当于C=C+A
    -=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C-=A相当于C=C-A
    *=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C*=A相当于C=C*A
    /=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C/=A相当于C= C /A
    %=求模且赋值运算符,求两个操作数的模赋值给左边操作数C%=A相当于C = C%A
    <<=左移且赋值运算符C<<=2等同于C= C<<2
    >>=右移且赋值运算符C>>=2等同于C= C>>2
    &=按位与且赋值运算符C&=2等同于C = C&2
    ^=按位异或且赋值运算符C^=2等同与C =C^2

    五、其他运算符
    下表列出了 C# 支持的其他一些重要的运算符,包括 sizeof、typeof 和 ? :。

    运算符描述实例
    sizeof()返回数据类型的大小sizeof(int),返回4
    typeof()返回class的类型typeof(Program);
    &返回变量的地址&a;将得到变量的实际地址
    *变量的指针*a;将指向一个变量
    ?:条件表达式如果条件为真?则为X:否则为Y
    is判断对象是否为某一类型。if(Ford is Car)//检查Ford是否是Car类的一个对象
    as 强制转换,即使转换失败也不会抛出异常

    object obj = new StringReader("Hello");

    StringReader r = obj as StringReader;

    1. namespace Demo运算符
    2. {
    3. internal class Program
    4. {
    5. static void Main(string[] args)
    6. {
    7. //自加自减
    8. //++自加1 --自减1
    9. //int a = 10;
    10. //a++;//a = a+1
    11. //Console.WriteLine(a);
    12. //int b = 10;
    13. //b--;//b = b-1
    14. //Console.WriteLine(b);
    15. ++在前 ++在后
    16. ++在前 先自加再赋值
    17. ++在后 先赋值再自加
    18. --在前 --在后
    19. --在前 先自减再赋值
    20. --在后 先赋值再自减
    21. //int x = 3;
    22. //int y = x--;
    23. //Console.WriteLine("y={0}",y);
    24. //y = --x;
    25. //Console.WriteLine("y={0}", y);
    26. //int z = 2;
    27. //int s = z++;//2 s=2 z =3
    28. //Console.WriteLine("s = {0}", s);
    29. //s = ++z;//4 s=4 z=4
    30. //Console.WriteLine("s = {0}", s);
    31. //+
    32. //int a = 10;
    33. //int b = 20;
    34. //int c = a + b;
    35. //Console.WriteLine(c);
    36. -
    37. //int d = a - b;
    38. //Console.WriteLine(d);
    39. *
    40. //int e = a * b;
    41. //Console.WriteLine(e);
    42. /取整数
    43. //int f = a / b;
    44. //Console.WriteLine(f);
    45. % 取余数
    46. //int g = a % b;
    47. //Console.WriteLine(g);
    48. //练习:从键盘输入一个三位数的整数,分别输出它的百位、个位和十位数。
    49. //Console.WriteLine("请输入一个三位的整数:");
    50. 一个三位整数输入123 /100 %100/10 %10
    51. //int num = Convert.ToInt32(Console.ReadLine());
    52. 百位 /100
    53. //int num1 = num / 100;
    54. //Console.WriteLine(num1);
    55. 十位 %100/10
    56. //num1 = num % 100 / 10;
    57. //Console.WriteLine(num1);
    58. 个位 %10
    59. //num1 = num % 10;
    60. //Console.WriteLine(num1);
    61. //四位数 取最前面的一个数字的时候,这个数字是几位数就/几
    62. //Console.WriteLine("请输入一个五位的整形数据:");
    63. 一个五位整数的输入 12345 /10000 %10000/1000 %1000/100
    64. %100/10 %10
    65. //int num3 = Convert.ToInt32(Console.ReadLine());
    66. //if((num3 > 0) &&(num3 < 100000))
    67. //{
    68. // //万位
    69. // int num1 = num3 / 10000;
    70. // Console.WriteLine("输入的五位整数万位:{0}", num1);
    71. // //千位
    72. // num1 = num3 % 10000 / 1000;
    73. // Console.WriteLine("输入的五位数的千位:{0}", num1);
    74. // //百位
    75. // num1 = num3 % 1000 / 100;
    76. // Console.WriteLine("输入的五位数的百位:{0}", num1);
    77. // //十位
    78. // num1 = num3 % 100 / 10;
    79. // Console.WriteLine("输入的五位数的十位:{0}", num1);
    80. // //个位
    81. // num1 = num3 % 10;
    82. // Console.WriteLine("输入的五位整数的个位:{0}", num1);
    83. //}
    84. //else if((num3 < 0) || (num3 >= 100000))
    85. //{
    86. // Console.WriteLine("输入的数据错误,请输入一个五位的整数!!!");
    87. //}
    88. //复合运算符
    89. //int x = 10;
    90. //int y= 20;
    91. //x += y;//x = x + y;
    92. //Console.WriteLine(x);
    93. int s = 11,则执行完s+=s*s之后,s的值是
    94. //int s = 11;
    95. //s += s * s;
    96. //Console.WriteLine(s);
    97. //关系运算符
    98. //int a = 10;
    99. //int b = 20;
    100. //bool c = a > b;
    101. //Console.WriteLine(c);
    102. //c = a < b;
    103. //Console.WriteLine(c);
    104. //c = a >= b;
    105. //Console.WriteLine(c);
    106. //c = a <= b;
    107. //Console.WriteLine(c);
    108. //c = a == b;
    109. //Console.WriteLine(c);
    110. //c = a != b;
    111. //Console.WriteLine(c);
    112. //string类型
    113. //string a = "10";
    114. //string b = "80";
    115. //string s = a + b;
    116. //Console.WriteLine(s+"asdf");
    117. //string a = "a";
    118. //string b = "b";
    119. //bool c = a == b;
    120. //Console.WriteLine(c);
    121. //逻辑运算符
    122. //&&与 并且 ||或者 !:取反
    123. //&&:2个条件都正确才会返回true 否则返回false
    124. //true true true
    125. //true false false
    126. //false true false
    127. //false false false
    128. //Console.WriteLine("请输入第一个一位整数:");
    129. //int num1 = Convert.ToInt32(Console.ReadLine());
    130. //Console.WriteLine("请输入第二个一位整数:");
    131. //int num2 = Convert.ToInt32(Console.ReadLine());
    132. //bool than = num1 == 9 && num2 ==9;
    133. //Console.WriteLine(than);
    134. //than = num1 < 10 && num2 >=10;
    135. //Console.WriteLine(than);
    136. //than = num1 > 10 && num2 <= 10;
    137. //Console.WriteLine(than);
    138. //than = num1 >= 10&&num2 >=10;
    139. //Console.WriteLine(than);
    140. // ||或 或者 只要一个条件对了就返回true
    141. //true true true
    142. //false true true
    143. //true false true
    144. //false false false
    145. //int a = 10;
    146. //int b = 20;
    147. //bool c = a == 10 || b== 20;
    148. //Console.WriteLine(c);
    149. //c = a < 10 || b == 20;
    150. //Console.WriteLine(c);
    151. //c = a == 10 || b > 20;
    152. //Console.WriteLine(c);
    153. //c= a> 10 || b > 20;
    154. //Console.WriteLine(c);
    155. !:取反
    156. //int a = 10;
    157. //int b = 20;
    158. //bool c = !(a > b);
    159. //Console.WriteLine(c);
    160. //Console.WriteLine(!c);
    161. //条件运算符
    162. //操作数1?操作数2:操作数3
    163. //?前面的是对的true就返回:前面的值,反之就返回:后面的值
    164. //int a = 10;
    165. //bool b = a > 10 ? true : false;
    166. //Console.WriteLine(b);
    167. //string d = a >= 10 ? "10" : "22";
    168. //Console.WriteLine(d);
    169. //条件1能被4整除 不能被100整除
    170. //条件2能被400整除
    171. //Console.WriteLine("请输入一个年份:");
    172. //int num1 = Convert.ToInt32(Console.ReadLine());
    173. //bool a = (((num1 % 4 == 0) && (num1 % 100 != 0)) || (num1 % 400 == 0)) ? true : false;
    174. //Console.WriteLine(a);
    175. sizeof
    176. //int a = sizeof(int);
    177. //Console.WriteLine(a);
    178. typeof 反射
    179. //Console.WriteLine(typeof(Program));
    180. //运算符的优先级
    181. //运算优先级别—般规则∶
    182. // 一元运算符高于二元运算教高于三元运算符
    183. //算术运算符高于关系运算符﹐高于逻辑运算符
    184. //int a = 10;
    185. //int b = 20;
    186. //bool c = b + a++ > 10&& b == 20 ? true : false;
    187. //Console.WriteLine(c);
    188. }
    189. }
    190. }

  • 相关阅读:
    Windows10中安装Apache2.4和PHP7.4
    2021Java面试题及答案整理(最新汇总版)
    【Pygame】 游戏开发 基础知识
    是顺流还是逆流?未来物流作业是否将被机器人全面取代?
    【Axure高保真原型】输入宽高控制图片尺寸
    c 语言 log
    汽车汽配行业经销商协同系统:实现汽配经销商销售管理全流程数字化
    day008
    【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )
    代理IP与Socks5代理在多领域的卓越应用
  • 原文地址:https://blog.csdn.net/weixin_52483742/article/details/132707292