通常运算符划分为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的井字棋彻底搞清楚。
 
 

三、C# 运算符和控制流的更多相关文章

  1. C#流程控制语句--分支语句(if,switch,三位运算符)

    分支语句:判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). 分支语句  if if(判断条件表达式) {//表达式结果为tu ...

  2. ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用

    ES6新增的三点运算符,是由三个点表示,在数组中扮演着重要的角色,可以对数组进行合并与分解.可以对set等数据结构进行转换.可以对函数参数进行简化表示,接下来,我们一起揭开其神秘面纱… ●三点—res ...

  3. ES6_05_三点运算符和形参默认值

    三点运算符的用途: # 1. rest(可变)参数 * 用来取代arguments 但比 arguments 灵活,只能是最后部分形参参数 function fun(...values) { cons ...

  4. Es6扩展运算符--三点运算符(...)--展开语法(Spread syntax)

    0.看文档呀 关于拓展运算符更详细的解释见 > MDN展开语法 关于剩余参数更详细的解释见 >MDN剩余参数 关于解构赋值更详细的解释见 >MDN解构赋值 直接看上面的文档更好 1. ...

  5. ES6(模板字符串,三点运算符,Symbol,iterator接口)

    模板字符串 作用:简化字符串的拼接 模板字符串必须用``包含 变化的部分使用${xxx}包含 对象的简写方式 同名的属性可以省略不写 可以省略函数的function 箭头函数 箭头函数的特点 箭头函数 ...

  6. 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流

    最初的步骤 Python是大小写敏感的 任何在#符号右面的内容都是注释 >>> help('print')在“print”上使用引号,那样Python就可以理解我是希望获取关于“pr ...

  7. C# 本质论 第三章 操作符和控制流

    操作符通常分为3大类:一元操作符(正.负).二元操作符(加.减.乘.除.取余)和三元操作符( condition?consequence:alternative(consequence和alterna ...

  8. Java 基础知识总结 (三、运算符)

    三.Operators 运算符 Assignment Operators(赋值运算符) =   +=   -=   %=   *=   /=    <<=     >>=    ...

  9. Mysql学习笔记(三)运算符和控制流函数

    本章学习内容: 1.操作符 2.控制流程函数 操作符: i.圆括号.. 简单的介绍一下圆括号,圆括号的使用的目的是规定计算表达式的顺序...这个想必大家都熟悉例如  mysql>select 1 ...

随机推荐

  1. J2EE和EJB有什么关系?

    其实j2EE就是java的企业版,与javaSE(标准版)有是有区别的,所以运行环境会有差异(简单点可以说,这是两组不同的接口),我们一般所熟悉的tomcat仅仅只实现了j2ee的一小部分规范,它只是 ...

  2. Android Wear开发 - 数据通讯 - 第三节 : 事件处理

    http://developer.android.com/training/wearables/data-layer/events.html 以下是本人在学习官方开发文档时的笔记,主要是翻译为主,并在 ...

  3. Hibernate 配置详解(3)

    7) hibernate.max_fetch_depth: 该属性用于设置left out join单对象查询关系(one-to-one/many-to-one)中最大的关联深度.默认值为0,即默认情 ...

  4. -_-#【Node】Express 400 Error: ENOENT, open

    Express 400 Error: ENOENT, open cd alleatisland, node app来启动

  5. Delphi调用webservice总结

    Delphi调用webservice总结     Delphi调用C#写的webservice 用delphi的THTTPRIO控件调用了c#写的webservice. 下面是我调试时遇到的一些问题: ...

  6. Java---JUnita、注解与类加载器详解以及实例

    JUnit软件测试技术(工具) 在项目中建立专门用户测试的包结构. 在Junit中,通过@Test注解,可以运行一个方法. ★ Junit注解说明 使用了@Test注解应该满足以下条件: 1) 必须是 ...

  7. poj2586

    千年虫病毒 一个财务公司受到电脑病毒攻击所以丢失了一部分年终财务的数据. 他们所有记得的东西都在Inc里面储存着,在1999年之前公司要每个月都贴出盈利和亏损情况.亏损的是d,由于收到了攻击,他们不记 ...

  8. 关于C语言指针的问题

    在学习关于C语言指针的时候,发现这样一个问题,代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h&g ...

  9. linux Tomcat restart脚本简单版

    linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32  #找到tomcat进程的id并kill掉 ps -ef |grep t ...

  10. Linux 安全

     Linux 安全 1.安装 使系统处于单独(或隔离)的网络中.以防止未受保护的系统连接到其它网络或互联网中受到可能的攻击 安装完成后将下面软件卸载 pump                      ...