zoukankan      html  css  js  c++  java
  • 学习C#之旅(C#语言基础,运算符)

    我知道大家看了,我的随笔知识的是超基础的内容!

    不过你不知道这些基础的内容,想想你也不会成为今天的高手!高手往往容易犯低级错误!你说是吗!

    是我的吉他老师讲过,吉他高手每天都要弹一些入门基础的练习曲!练习曲是练习!不是简单的就不学了!

    简单的不一定最好,最好的不一定简单!

    知识点:

    运算符(C# 与 Java)

    C# 提供 Java 支持的所有适用的运算符,如下表所示。在表的最后,您会看到在 C# 中可用但 Java 中没有的一些新运算符:

    类别

    符号

    一元

    ++ -- + - ! ~ ()

    乘法

    * / %

    加法

    + -

    移位

    << >>

    关系

    < > <= >= instanceof

    相等

    == !=

    逻辑“与”

    &

    逻辑 XOR

    ^

    逻辑“或”

    |

    条件 AND

    &&

    条件 OR

    ||

    条件运算

    ? :

    赋值

    = *= /= %= += -= <<= >>= &= ^= |=

    操作数类型

    typeof

    操作数大小

    sizeof

    执行溢出检查

    checked

    取消溢出检查

    unchecked

    唯一不能在 C# 中使用的 Java 运算符是移位运算符 (>>>)。因为 Java 中缺少无符号的变量,所以需要这一运算符处理需要向右移位以在最高有效比特位中插入 1 这种情况。

    C# 支持无符号变量,因此,C# 只需要标准的 >> 运算符。此运算符根据操作数是否有符号会产生不同的结果。将一个无符号数向右移位会在最高有效比特位中插入 0,而将一个有符号数向右移位会复制前面的最高有效比特位。

    如果结果大小比分配给所用数据类型的位数大很多,算术运算将导致溢出。对给定的整数算术运算使用 checkedunchecked 关键字可以检查或忽略此类溢出。如果表达式是一个使用 checked 的常数表达式,就会在编译时产生错误。

    下面这个简单的示例演示了这些运算符:

    class TestCheckedAndUnchecked
    {
        static void Main()
        {
            short a = 10000;
            short b = 10000;

            short c = (short)(a * b);                     // unchecked by default
            short d = unchecked((short)(10000 * 10000));  // unchecked
            short e = checked((short)(a * b));            // checked - run-time error

            System.Console.WriteLine(10000 * 10000);  // 100000000
            System.Console.WriteLine(c);              // -7936
            System.Console.WriteLine(d);              // -7936
            System.Console.WriteLine(e);              // no result
        }   
    }

    在这段代码中,unchecked 运算符绕过编译时错误,否则下列语句可能会导致编译时错误:

    short d = unchecked((short)(10000 * 10000));  // unchecked
    

    下面的表达式在默认情况下 unchecked,因此值溢出后无提示:

    short c = (short)(a * b);                     // unchecked by default

    我们可以在运行时使用 checked 运算符强制检查表达式是否发生溢出:

    short e = checked((short)(a * b));            // checked - run-time error

    将前两个值赋给 dc,会在程序运行时无提示地溢出值 -7936,但是在尝试相乘以获取使用 checked() 的 e 的值时,此程序将引发

    说明:

    也可以通过使用命令行编译器开关 (/checked) 控制是否检查代码块的算术溢出,或直接在 Visual Studio 中基于每个项目进行控制。

  • 相关阅读:
    POJ 2411 状态压缩递,覆盖方案数
    POJ 2774 最长公共子串
    POJ 1743 不可重叠的最长重复子串
    POJ 3294 出现在至少K个字符串中的子串
    POJ 3261 出现至少K次的可重叠最长子串
    POJ 1741/1987 树的点分治
    HDU1556 Color the ball
    解决linux系统时间不对的问题
    CentOS 6.9使用Setup配置网络(解决dhcp模式插入网线不自动获取IP的问题)
    Linux网络配置(setup)
  • 原文地址:https://www.cnblogs.com/cube/p/1247885.html
Copyright © 2011-2022 走看看