• 三、C# 运算符和控制流


    通常运算符划分为3大类:
    一元运算符、二元运算会、三元运算符,它们对应的操作数分别是1个、2个、3 个。
    结合性和优先级顺序。
    二元运算会是从左向右结合的,相反赋值运算符是从右向左结合的。
     
    char类型存储的是字符而不是数字,但它是一个整型。
     
    1、浮点型的特殊性
     
    float和double有一些特殊性,
    一个float具有7位精度。只能有7位精度的有效数字。其它会被截断。存在舍入误差。
     
     
    浮点类型造成非预期的不相等
    比较两个值是否相等的时候,浮点类型的不准确性可能造成非常严重的后果。有的时候,本来
    应该相等的值被错误地判断为不相等。
     
    2、递增和递减运算符
     
    运算符的位置决定了所赋的值是操作数计算之前还是之后的值。
    运算符采用后缀还是前缀形式,影响的只是在递增之前还是之后进行赋值,被影响的变量永远会改变。
     
    线程安全的递增和递减
    虽然递增和递减运算符简化了代码,但是两者执行的都不是原子级别的运算。
    在运算符执行期间,可能发生线程上下文切换,并可能造成一个竞争条件。
     
     
    3、常量表达式
    const int a=60*60*24;
    根据定义,常量表达式是C#编译器在编译时完成求值的表达式(而不是在程序运行时才能求值)
     
     
    4、作用域和声明空间
    作用域(scope)和声明空间(declaration space)是指由一个代码块限定的层次化上下文。
    作用域是一个特定的源代码区域,在这个区域中,使用一个项目的未限定名称来引用它
    完全合法,因为名称是引用是唯一的,是无歧义的。
    在一个区域中,如果声明的名称具有唯一性,这个空间就是声明空间。
     
    使用域限制了可访问性。
     
    5、逻辑布尔运算符
    OR运算符   ||                 两者一为true,返回true
    AND运算符  &&            两者皆为true,返回true
    XOR运算符    ^               两者只能有一为true,返回true
    逻辑求反运算符    !        取反
     
    6、条件运算符
        ?     :
     
    7、空接合运算符
     
    从C#2.0开始,执行空值检查的条件运算符有了一个简化语法,称为空接合运算符,
    它检查一个表达式是否为null;如果为null,就返回第二个表达式。或者返回第一个表达式
    expression1??expression2;
     
     
    3.6、按位运算符
     
    位和字节
    计算机的所有值都表示成1和0的二进制格式。这些1和0为位或者比特bit。
    8位分成一组,称为字节(byte)。
    在每一个连续的位都对应于2的一个乖幂。
     
    1、移位运算符
    如:
    1>>2
    1<<2
     
    左移:移位后在右边留下空位将由0来填充
    右移:左边的空位,正数由0补,负数由1补
     
    2、按位运算符
     
    &  与
    |    或
    ^    异或
    ~    取反
     
     
    3.9 C#预处理器指令
     
    C#预处理哭指令是在在编译时调用的。
    预处理器指令告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。
     
    每一个预处理器指令都以一个#开头,而且必须在一行中写完。换行符,标志着预处理
    器指令的结束,不是分号。
    在网上找记录下来。
    弄清附录B的井字棋彻底搞清楚。
     
     
  • 相关阅读:
    函数式编程
    go语言中strings包常用方法
    Go--实现两个大数相乘
    谷歌插件
    函数的防抖---js
    函数截流---js
    函数的记忆----函数性能优化
    word-break、word-wrap、white-space区别
    overflow属性
    利用边框写一个三角形
  • 原文地址:https://www.cnblogs.com/tlxxm/p/4604511.html
Copyright © 2020-2023  润新知