C# 本质论 第三章 操作符和控制流
操作符通常分为3大类:一元操作符(正、负)、二元操作符(加、减、乘、除、取余)和三元操作符( condition?consequence:alternative(consequence和alternative表达式类型要一致) ),它们对应的操作数分别是一个、两个和三个。
要是永远括号增加代码可读性。
要用符合格式化而不是加法操作符来拼接字符串。
可以用char类型相减求两字母距离。
float具有七位精度:
错误代码:
float n1 = 0.987654321;

正确代码:
float n = 0.987654321F;
Console.WriteLine(n); //Displays: 0.9876543
float n = ;//不加F也可以
Console.WriteLine(n);
//Displays: 9.876543E+8
二进制浮点类型内部实际存储的是二进制分数而不是十进制分数。所以,分母不是2的整数次幂的小数无法用二进制浮点数准确表示。实际上,使用一个接近十六位float的,并且分母为2整数次幂的分数来表示。double十五位有效数字。
double n = 140.6F;
Console.WriteLine(n);
//Displays: 140.600006103516
避免在需要准确的十进制算术运算时使用二进制浮点类型,而使用decimal浮点型。
double n = 140.63435423524252315;
Console.WriteLine(n);
//Displays:140.634354235243 double n = 140.63435423524242315;
Console.WriteLine(n);
//Displays: 140.634354235242
所以,避免二进制浮点类型用于相等性条件式。要么判断两个值之差是否在容差范围之内,要么使用decimal类型。
float n = 0F;
Console.WriteLine(n/);
//Displays: 非数字 Console.WriteLine(/);
//报错:被常数零除 Console.WriteLine(0.0/);
//Displays: 非数字 Console.WriteLine(-/);
//报错:被常数零除 Console.WriteLine(-1F/);
//Displays: 负无穷大 Console.WriteLine(1F/);
//Displays: 正无穷大
复合赋值操作符:
char current = 'z';
int unicodeValue;
do
{
unicodeValue = current;
Console .Write("{0}={1}\t",current,unicodeValue);
current--;
} while (current>='a');
Console.Read();

int count = ;
int result;
result = count++;
Console .Write("{0}\t{1}",result,count);
Console.ReadLine();
//123 124
int count = ;
int result;
result = ++count;
Console .Write("{0}\t{1}",result,count);
Console.ReadLine();
//124 124
前缀操作符的结果是变量递增递减之后的值,而后缀操作符的结果是变量递增递减之前的值。
不要用常量表示将来可能变化的任何值。
空接合操作符(??)如果之前都是null,则表示最后一个表达式。
x ?? y ?? z;
不要将移位操作符用作乘除法。
按位逻辑操作符:& | ^ 不进行“短路求值”:& |
按位赋值操作符:&= |= ^=
取反操作符(~)
控制流:
do/while类似于while循环,区别在于它至少会循环一次。
foreach循环:
foreach(type variable in collection)
statement
不要使用continue作为跳转语句退出switch小节。
跳转语句:break。
预处理指令:在编译时调用
#region
#endregion
C# 本质论 第三章 操作符和控制流的更多相关文章
- perl5 第三章 操作符
第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十 ...
- Think in Java 第三章操作符
Think in Java 第三章操作符 赋值 对象赋值 我们真正操作的是对对象的引用.所以倘若"将一个对象赋值给另一个对象",实际上是将"引用"从一个地方 ...
- 初读"Thinking in Java"读书笔记之第三章 --- 操作符
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...
- 《Java编程思想》笔记 第三章 操作符
1.操作符种类: 运算顺序1-7 一元操作符(单目操作符) - 负号, + 正号,--递减,++递增 算术操作符 + - * / % 移位操作符 <<左移(低位补0),>&g ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- Rxjava2实战--第三章 创建操作符
Rxjava2实战--第三章 创建操作符 Rxjava的创建操作符 操作符 用途 just() 将一个或多个对象转换成发射这个或者这些对象的一个Observable from() 将一个Iterabl ...
- 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16 过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...
- Java语言程序设计(基础篇) 第三章 选择
第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...
- 07.C#泛型的限制和可空类型的简单说明(三章3.5-四章4.1)
自己在写文章的同时,也是在学习,对于书中的语句很多其实没有太好的理解,读一本书,要消化!!!三章都是讲泛型的,最后写一下泛型的限制,对于本章学习的完结,one end,one begin. 看下面的代 ...
随机推荐
- Java类变量和成员变量初始化过程
一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...
- Android中访问sdcard路径的几种方式
以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...
- VS2015墙内创建ionic2 【利用nrm更换源,完美!】
STEP 1 设置cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 一句话建立cnpm STEP 2 安装nr ...
- Maven常用命令
开发中常用的命令: 1. mvn compile 编译源代码2. mvn test-compile 编译测试代码3. mvn test 运行测试4. mvn package 打包,根据pom.xml打 ...
- Linux基础介绍【第八篇】
Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以 ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- can't run roscore 并且 sudo 指令返回 unable to resolve host
I'm using ubuntu14 LTS. Problems: 1. When run roscore, got a mistake and an advice to ping the local ...
- Web 前端攻防(2014版)
在百度 FEX 团队时写的.有次让我写点前端开发中注意的安全规范,结果写着写着就跑题了,写了一堆纯前端实现的攻击方式...当然还有防范措施. 文章就懒得粘过来了~ 直接贴个地址算了:) http:// ...
- ASP.NET 5 改名 ASP.NET Core 1.0
今天,Scott Hanselman在其博客上宣布<ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0>, ...
- SSH免密码登录
每次用SSH登录服务器都要输入密码,次数多了就觉得有些麻烦,反正是自己个人用的电脑,安全应该有保障,如何能直接登录上去而不需要输入密码呢?其实一句话就讲清楚了:把自己公钥放在服务器上. Linux客户 ...