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. 看下面的代 ...
随机推荐
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- Spring的数据库开发
Spring JDBC框架操作mysql数据库 Spring中的JDBC为我们省去连接和关闭数据库的代码,我们着重关注对数据库的操作.Sprin ...
- Java 程序优化 (读书笔记)
--From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...
- Atiti.大企业病与小企业病 大公司病与小公司病
Atiti.大企业病与小企业病 大公司病与小公司病 1. 大企业病,一般会符合机构臃肿 .多重领导 .人才流失的特点.1 2. 大企业病避免方法1 3. 小企业病 1 3.1.1. 表现1 4. 如何 ...
- jQuery中取消后续执行内容
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title&g ...
- 从零自学Hadoop(22):HBase协处理器
阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...
- 解决开启服务器防火墙导致ftp不能连接的问题
在防火墙设置的"高级"选项卡中的"网络连接设置"--"本地连接"--"设置"中添加了"FTP服务器" ...
- CentOS Mono Nginx 部署 MVC4+WebApi
CentOS Mono Nginx 部署 MVC4+WebApi 经过几天的折磨,终于在CentOS上成功部署了MVC4+WebApi.Mono上的服务器推荐两种:Jexus(国产高人写的一款很牛的服 ...
- mono for android学习过程系列教程(4)
今天要讲的事情是构建安卓程序的UI界面. 首先给大家上点小点心,如图: 上面就是我们界面的设计模块,仔细看中间大块的下方,有一个Source,这就类似webform里面的设计和源代码界面. 在这个页面 ...
- AOP之Castle DynamicProxy 动态代理
这里主要介绍使用castle这个动态代理,在.net一些开源的框架里可以找到它的影子,就连微软的rchard也是使用这个进行方法拦截等可以基于这个进行方法拦截,在这个方面PostSharp算是比较好用 ...