三、C# 运算符和控制流
三、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,返回trueAND运算符 && 两者皆为true,返回trueXOR运算符 ^ 两者只能有一为true,返回true逻辑求反运算符 ! 取反6、条件运算符 ? :7、空接合运算符从C#2.0开始,执行空值检查的条件运算符有了一个简化语法,称为空接合运算符,它检查一个表达式是否为null;如果为null,就返回第二个表达式。或者返回第一个表达式exPRession1??expression2;3.6、按位运算符位和字节计算机的所有值都表示成1和0的二进制格式。这些1和0为位或者比特bit。8位分成一组,称为字节(byte)。在每一个连续的位都对应于2的一个乖幂。1、移位运算符如:1>>21<<2左移:移位后在右边留下空位将由0来填充右移:左边的空位,正数由0补,负数由1补2、按位运算符& 与| 或^ 异或~ 取反3.9 C#预处理器指令C#预处理哭指令是在在编译时调用的。预处理器指令告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。每一个预处理器指令都以一个#开头,而且必须在一行中写完。换行符,标志着预处理器指令的结束,不是分号。在网上找记录下来。弄清附录B的井字棋彻底搞清楚。