操作符通常分为3大类:一元操作符(正、负)、二元操作符(加、减、乘、除、取余)和三元操作符( condition?consequence:alternative(consequence和alternative表达式类型要一致) ),它们对应的操作数分别是一个、两个和三个。

要是永远括号增加代码可读性。

要用符合格式化而不是加法操作符来拼接字符串。

可以用char类型相减求两字母距离。

float具有七位精度:

  错误代码:

  1. float n1 = 0.987654321;

  

  正确代码:

  1. float n = 0.987654321F;
  2. Console.WriteLine(n);
  3.  
  4. //Displays: 0.9876543
  1. float n = ;//不加F也可以
  2. Console.WriteLine(n);
  3. //Displays: 9.876543E+8

  二进制浮点类型内部实际存储的是二进制分数而不是十进制分数。所以,分母不是2的整数次幂的小数无法用二进制浮点数准确表示。实际上,使用一个接近十六位float的,并且分母为2整数次幂的分数来表示。double十五位有效数字。

  1. double n = 140.6F;
  2. Console.WriteLine(n);
  3. //Displays: 140.600006103516

避免在需要准确的十进制算术运算时使用二进制浮点类型,而使用decimal浮点型。

  1. double n = 140.63435423524252315;
  2. Console.WriteLine(n);
  3. //Displays:140.634354235243
  4.  
  5. double n = 140.63435423524242315;
  6. Console.WriteLine(n);
  7. //Displays: 140.634354235242

所以,避免二进制浮点类型用于相等性条件式。要么判断两个值之差是否在容差范围之内,要么使用decimal类型。

  1. float n = 0F;
  2. Console.WriteLine(n/);
  3. //Displays: 非数字
  4.  
  5. Console.WriteLine(/);
  6. //报错:被常数零除
  7.  
  8. Console.WriteLine(0.0/);
  9. //Displays: 非数字
  10.  
  11. Console.WriteLine(-/);
  12. //报错:被常数零除
  13.  
  14. Console.WriteLine(-1F/);
  15. //Displays: 负无穷大
  16.  
  17. Console.WriteLine(1F/);
  18. //Displays: 正无穷大

复合赋值操作符:

  1. char current = 'z';
  2. int unicodeValue;
  3. do
  4. {
  5. unicodeValue = current;
  6. Console .Write("{0}={1}\t",current,unicodeValue);
  7. current--;
  8. } while (current>='a');
  9. Console.Read();

  1. int count = ;
  2. int result;
  3. result = count++;
  4. Console .Write("{0}\t{1}",result,count);
  5. Console.ReadLine();
  6. //123 124
  1. int count = ;
  2. int result;
  3. result = ++count;
  4. Console .Write("{0}\t{1}",result,count);
  5. Console.ReadLine();
  6. //124 124

前缀操作符的结果是变量递增递减之后的值,而后缀操作符的结果是变量递增递减之前的值。

  不要用常量表示将来可能变化的任何值。

空接合操作符(??)如果之前都是null,则表示最后一个表达式。

  1. x ?? y ?? z;

 不要将移位操作符用作乘除法。

按位逻辑操作符:& | ^   不进行“短路求值”:& |

按位赋值操作符:&= |= ^=

取反操作符(~)

控制流:

do/while类似于while循环,区别在于它至少会循环一次。

foreach循环:

  1. foreach(type variable in collection)
  2. statement

不要使用continue作为跳转语句退出switch小节。

跳转语句:break。

预处理指令:在编译时调用

#region

#endregion

C# 本质论 第三章 操作符和控制流的更多相关文章

  1. perl5 第三章 操作符

    第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十 ...

  2. Think in Java 第三章操作符

    Think in Java 第三章操作符 赋值 对象赋值 ​ 我们真正操作的是对对象的引用.所以倘若"将一个对象赋值给另一个对象",实际上是将"引用"从一个地方 ...

  3. 初读"Thinking in Java"读书笔记之第三章 --- 操作符

    更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...

  4. 《Java编程思想》笔记 第三章 操作符

    1.操作符种类: 运算顺序1-7 一元操作符(单目操作符)  - 负号, + 正号,--递减,++递增 算术操作符 + - *  /  % 移位操作符  <<左移(低位补0),>&g ...

  5. java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;

    <java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...

  6. Rxjava2实战--第三章 创建操作符

    Rxjava2实战--第三章 创建操作符 Rxjava的创建操作符 操作符 用途 just() 将一个或多个对象转换成发射这个或者这些对象的一个Observable from() 将一个Iterabl ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

  8. Java语言程序设计(基础篇) 第三章 选择

    第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...

  9. 07.C#泛型的限制和可空类型的简单说明(三章3.5-四章4.1)

    自己在写文章的同时,也是在学习,对于书中的语句很多其实没有太好的理解,读一本书,要消化!!!三章都是讲泛型的,最后写一下泛型的限制,对于本章学习的完结,one end,one begin. 看下面的代 ...

随机推荐

  1. Adaboost提升算法从原理到实践

    1.基本思想: 综合某些专家的判断,往往要比一个专家单独的判断要好.在"强可学习"和"弱科学习"的概念上来说就是我们通过对多个弱可学习的算法进行"组合 ...

  2. SAP CRM 用户界面对象类型和设计对象

    在CRM中的用户界面对象类型的帮助下,我们可以做这些工作: 进行不同的视图配置 创建动态导航 从设计层控制字段标签.值帮助 控制BOL对象的属性的可视性 从导航栏访问自定义组件 一个用户界面对象类型之 ...

  3. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  4. MySQL全文索引 FULLTEXT索引和like的区别

    1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAIN ...

  5. No plugin found for prefix ‘jetty’ in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories

    maven配置文件(最大的那个)的<pluginGroups></pluginGroups>增加一行如下<pluginGroups><pluginGroup& ...

  6. [转载]Java 8 日期&时间 API

    Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...

  7. mono3.2和monodevelop4.0在ubuntu12.04上两天的苦战

    首先第一步是设置ubuntu server 12.04版更新源,推荐中科大的比较快:deb http://debian.ustc.edu.cn/ubuntu/ precise main multive ...

  8. 深入浅出聊优化:从Draw Calls到GC

    前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的 ...

  9. 【腾讯Bugly干货分享】一步一步实现Android的MVP框架

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...

  10. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...