C# 运算符大全(按照操作数个数分类)

来源:互联网 发布:linux安装谷歌浏览器 编辑:程序博客网 时间:2024/04/30 11:20
一元运算符: 

+   -   !   ~   ++   –   true   false   &   sizeof()


二元运算符:

       +=,-=等不进行说明。

+   -   *    /    %    <<    >>    <  >     <=    >=    is  as    ==   &    ^     &&    ||    +=    -=    *=    /=    %=    |=    ^=    <<=    >>=    ?? 


三元运算符

     ?:


重点说明:

        1.&与&&的区别

        2.|与||的区别

        3.<<和>>的位运算

        4.^的说明

        5.??和?:的说明

     

一元运算符说明: 
+: 
     一元 + 运算符是为所有数值类型预定义的。对数值类型进行一元 + 运算的结果就是操作数的值。 
    也就是数值的正数。


-: 
    一元 - 运算符是为所有数值类型预定义的。数值类型的一元 - 运算的结果是操作数的反数 
    也就是数值的负数。


!: 
    逻辑非运算符 (!) 是对操作数求反的一元运算符。为 bool 定义了该运算符,当且仅当操作数为 false 时才返回 true。


~: 
    ~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的


++: 
增量运算符. 
++x:先进行自增,后进行运算。 
x++:先进行运算,后进行自增。


–: 
减量运算符. 
–x:先进行自减,后进行运算。 
x–:先进行运算,后进行自减。


true: 
当由用户定义的类型定义时,返回 bool 值 true 以表示真,否则返回 false。


false:

&:
返回其操作数的地址

sizeof(): 
    用于获取 值类型 的字节大小. 
   sizeof 运算符仅适用于值类型,而不适用于引用类型。 
    从 C# 2.0 版开始,将 sizeof 应用于预定义类型不再要求使用不安全模式。


二元运算符说明:

        *:

             乘法运算符 (*),用于计算操作数的积

       

        /:

           除法运算符 (/) 用第二个操作数除第一个操作数


       %:

          模数运算符 (%) 计算第二个操作数除第一个操作数后的余数


       +:

           二元 + 运算符。对于数值类型,+ 计算两个操作数之和。


       -:

           二元 - 运算符是为所有数值类型和枚举类型预定义的,其功能是从第一个操作数中减去第二个操作数。


       <<:

          左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int


      >>:

         右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。第二个操作数的类型必须是 int


      <:

          所有数值和枚举类型都定义“小于”关系运算符 (<),如果第一个操作数小于第二个操作数,该运算符返回 true,否则返回 false


      >:

         所有数值类型和枚举类型都定义“大于”关系运算符 >,如果第一个操作数大于第二个操作数,它将返回 true,否则返回 false


      <=:

         所有数值和枚举类型都定义了“小于等于”关系运算符 (<=),如果第一个操作数小于或等于第二个操作数,则该运算符将返回 true,否则返回false


      >=:

         所有数值类型和枚举类型都定义“大于等于”关系运算符 >=,如果第一个操作数大于或等于第二个操作数,该运算符将返回 true,否则返回 false


      is:

         检查对象是否与给定类型兼容。返回true或false


     as:

         用于在兼容的引用类型之间执行转换,as 运算符类似于强制转换操作;但是,如果转换不可行,as 会返回 null 而不是引发异常。


      ==:

          对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。


      !=:

          如果操作数相等,则不等运算符 (!=) 返回 false,否则,返回 true。为所有类型(包括字符串和对象)预定义了不等运算符。用户定义的类型可重载!= 运算符。


      &:

          为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true


      ^:

           为整型和 bool 类型预定义的。对于整型,^ 将计算操作数的按位“异或”。对于 bool 操作数,^ 将计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,结果才为 true


        |:

           为整型和 bool 类型预定义的。对于整型,| 计算操作数的按位“或”结果。对于 bool 操作数,| 计算操作数的逻辑“或”结果;也就是说,当且仅当两个操作数均为 false 时,结果才为 false


        &&:

           条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。


        ||:

          条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,但仅在必要时才计算第二个操作数。


        

重点说明:

      1.&和&&的区别:

             &:当两个操作数均为 true 时,结果才为 true。如果第一个操作数为false,也会进行判断第二个操作数。

           &&:两个操作数均为 true 时,结果才为 true。如果第一个操作数为false,则不会进行第二个操作数的判断。

           demo:

                 通过Demo可以看出&操作符中operatorA进行了运算,&&操作符中operatorB没有进行运算。

                 通过&&的说明“仅在必要时才计算第二个操作数”也进行了说明。

            int operatorA = 1;            int operatorB = 1;            if (false & ++operatorA == 2)            {                MessageBox.Show("均为true");            }            //operatorA 为 2            MessageBox.Show(operatorA.ToString());            if (false && ++operatorB == 2)            {                MessageBox.Show("均为true");            }            //operatorB 为 1            MessageBox.Show(operatorB.ToString());


           2.|与||的区别

             |:当两个操作数均为false的时候为false,不论第一个操作数是否为true,都会对第二个操作数进行判断

             ||:当两个操作数均为false的时候为false,如果第一个操作数为true,那么不会进行第二个操作数的判断。

           demo:

            int operatorA = 1;            MessageBox.Show((true | ++operatorA != 2).ToString());  //TRUE            MessageBox.Show(operatorA.ToString());                  //2            int operatorC = 1;            MessageBox.Show((true || ++operatorC != 2).ToString()); //true            MessageBox.Show(operatorC.ToString());                  //1

          3.<<和>>的位运算

              <<和>>  <<=和>>=都是位运算符

             demo

            int numA = 10 << 1;                 /* 结果为20             * <<就是将第一个操作数以二进制的方式向左移动第二个操作位数,均以0补全。             *           转换为2进制    1010     ->10             *           进行位运算     10100    ->20             */            int numB = 10 >> 1;     //结果为5            /* 结果为5             * <<就是将第一个操作数以二进制的方式向右移动第二个操作位数。             *           转换为2进制    1010     ->10             *           进行位运算     0101     ->5             */

          4.^的说明

             二进制计算:

                    1和1  为0

                    1和0  为1

                    0和0  为0

            //MessageBox被执行            if (true ^ false)                MessageBox.Show("1");            //MessageBox未被执行            if (true ^ true)                MessageBox.Show("2");            int numA = 1 ^ 1;   //结果为0            /*  按位运算    1->   1             *              1->   1             *                    0             */            int numb = 2 ^ 1;   //结果为3            /*  按位运算    2->   10             *              1->   01             *                    11             */

          5.??和?:的说明

           ??: 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数

                       允许??两边的操作数返回不同类型的值

           string str=Convert.ToString(DataRow[i] ?? 1);

            ?:A值与B值必须是同类型,?之前必须返回一个bool类型的值

                     表达式返回bool?A值:B值。

            int numA = 1;            int numB = 2;            string str = numB == numA ? "1" : "2";


原创粉丝点击