根据设计,C#编译器允许将任何float或double值除以零,是因为在某些情况下,这种操作是有意义的,并且可以通过特殊的数值来表示。
在C#中,float和double类型的数值可以表示正无穷大、负无穷大和NaN(非数字)。当一个数值除以零时,可以得到以下结果:
因此,C#编译器允许将任何float或double值除以零,以便在需要时能够表示这些特殊的数值。在实际编程中,应该注意避免除以零的情况,以避免产生不可预测的结果。
上面例子的Main方法没有返回任何值, 所以它的返回类型是void. C#里, Main方法是程序默认的入口....转换 C# 允许在兼容类型的实例间进行转换, 每次转换肯定会从当前的值创造出一个新的值....Console.WriteLine(double.NegativeInfinity); // -Infinity [image.png] 用非零数除以0就会得到无限值: 1.0 / 0.0 // Infinity...NaN不等于(==)任何值, 包括NaN. 判断是否为NaN: float.IsNaN(xx), double.isNaN(xx)....True C# 允许逐字字符串, 使用符号 @, 但是不支持转义字符.
把完成一个需求的所有步骤从头到尾逐步实现 根据开发需求,将一个一个功能封装成一个又一个函数 按照需求顺序执行调用不同的函数 特点 注重步骤和过程,不注重职责分工 如果需求复杂,代码会变得很复杂...根据设计,它可能需要接受这些属性值、计算面积和显示细节。下面是一个 Rectangle(矩形)类的实现。...标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : “ ‘ / \。 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。...字符串(String)类型 字符串(String)类型 允许您给变量分配任何字符串值。字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。...如果两个操作数都非零,则条件为真。 (A && B) 为假。 || 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A || B) 为真。 ! 称为逻辑非运算符。
使用值类型或引用类型参数,实例化泛型 C# 类时,反射可在运行时对其进行查询,且其实际类型和类型参数皆可被确定。...在没有任何约束的情况下,类型参数可以是任何类型。编译器只能假定 System.Object 的成员,它是任何 .NET 类型的最终基类。如果客户端代码使用不满足约束的类型,编译器将发出错误。...例如,基类约束告诉编译器,仅此类型的对象或派生自此类型的对象可用作类型参数。编译器有了此保证后,就能够允许在泛型类中调用该类型的方法。...它允许在方法定义时不指定具体的数据类型,而是在调用方法时根据需要传入实际的类型。...编译器可基于传入的方法参数推断类型参数;而无法仅根据约束或返回值推断类型参数,因此,类型推理不适用于不具有参数的方法。
比如: float a = 3.5f; double b = a; 在上面这个例子当中,我们将一个float类型的变量a赋值给了double类型的b。...那么编译器会将a的值拓展成64位的double再赋值给b。也就是说不会影响b的类型。 这样将长度更短的变量转化成更长变量的类型转换除了多占用一点内存之外,不会导致什么问题。...在不同的整型之间以及整型转化成浮点型的操作可能被允许,取决于编译器知道目标变量能够正确地存储赋给它的值。比如可以将int类型赋值给long,因为long总是至少与int一样长,反向操作则会被禁止。...因为我们加了const修饰之后,编译器就明确知道了x的值,就等于55,它在char类型的范围内,所以允许将它转化成char。...float 否则说明所有操作数都是整数,执行整型提升 强制类型转换 C++当中允许开发者手动强制对变量的类型进行转换,这也是C++的设计思路,规则严谨,但也允许推翻规则追求灵活度。
9.000000 如您所见,编译器会自动将 int 值 9 转换为 float 值 9.000000。...尤其是如果相反的情况 - 以下示例会自动将 float 值 9.99 转换为 int 值 9: // 自动转换:float to int int myInt = 9.99; printf("%d",...您必须了解编译器在这些情况下的工作方式,以避免意外结果。 另一个例子,如果您将两个整数 5 除以 2,您知道结果是 2.5。...正如您在此页面的开头所知,如果您将 sum 存储为整数,结果将只显示数字 2。因此,将 sum 存储为 float 或 double 会更好,对吗?...= (float) num1 / num2; printf("%.1f", sum); // 输出 2.5 C 语言中的常量 如果您不想让其他人(或自己)更改现有变量的值,可以使用 const 关键字
这篇文章基于, C# 9.0候选新特性 原生大小的数字类型 这次引入一组新类型(nint,nuint,nfloat等)'n'表示native(原生),该特性允许声明一个32位或64位的数据类型,这取决于操作系统的平台类型...Records可以是值类型或引用类型。...正如我两年前在我文章中所说,C#将实现更多的函数式编(FP)程概念,Type Classes就是FP概念之一。在函数式编程中,Type Classes允许您在类型上添加一组操作,但不实现它。...Params Span 允许params语法使用Span 这个帮助来实现没有任何堆分配的params参数传递。此功能可以使params方法的使用更加高效。...新的语法如下, void Foo(params Span values); struct允许使用无参构造函数 到目前为止,在C#中不允许在结构体声明中使用无参构造函数,在C#9中,将删除此限制
基本语法 (菜鸟系列学习教程) C#,又名Csharp,天朝喜欢叫C井。 C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序有各种相互交互的对象组成。...根据设计,它可能需要接受这些属性值,计算面积和详细细节。...C#中的注释 注释是用于解释代码。编译器会忽略注释的条目。...标识符 标识符是用来识别类、变量、函数或任何其他用户定义的项目。在C#中,类的命名必须遵循如下基本规则: 标识符必须以字幕或下划线(_)开头,后面可以跟一系列的字幕、数字或下划线。...,decimal,default,delegate,do,double,else,enum,event,explicit,extem,false,finally,fixed,float,for,foreach
位精确的十进制值,28-29 有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M double 64 位双精度浮点型 (+/-)5.0 x 10-324 到...嵌套 if 语句 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。...Exp2 : Exp3; 六、C# 循环 循环类型 描述 while 循环 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。...循环控制语句 控制语句 描述 break 语句 终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。...编译器会根据数组类型隐式初始化每个数组元素为一个默认值。
在大括号内也不包含任何东西。此时变量初始化为零。 变量的初始化的问题,有助于防范类型转换错误。 1.5 无符号类型 优点:可以增大变量能够存储的最大值。...C++将非零值表示为true,将零表示为false。 bool is_ready = true; 2. const限定符 符号名称指出了常量表示的内容。 const关键字来修改变量声明和初始化。...常量被初始化后,其值就被固定,编译器将不允许再修改该常量的值。 将名称的首字母大写,以便提醒是个常量,可便于阅读性增强。如果是变量名全大写,则使用 #define 。...计算机将值分为两部分存储,一部分表示值,另一部分则用于对值进行放大或缩小。 3.1 为什么叫浮点数? 因为小数点可移动,所以称之为“浮点数”。...根据可以表示的有效数位和允许的指数最小范围,可以分为3种浮点数类型:float、 double和long double。
float 在空间允许的情况下没有必要使用,都应使用 double 提高精度。...long int和int是一回事 64位编译系统:int占四字节,long占8字节,long数据范围变为:-2^63 ~ 2^63-1 注意,long long在任何平台和编译器上都已经被定义为占8...long int和int是一回事 64位编译系统:int占四字节,long占8字节,long数据范围变为:-2^63 ~ 2^63-1 注意,long long在任何平台和编译器上都已经被定义为占8...对于32位的float类型,其最大数值是: 符号位:1位 指数位:8位 尾数位:23位 根据IEEE 754标准,float类型的指数位采用偏移表示法,即实际的指数值是存储的指数值减去一个偏移量。...例如,如果有一个float变量存储了一个数值,那么这个数值的实际值可以在其基础上加上或减去最大精度而不改变可观察到的值。
C# 基本语法 C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。...根据设计,它可能需要接受这些属性值、计算面积和显示细节。...C# 中的注释 注释是用于解释代码。编译器会忽略注释的条目。...标识符 标识符是用来识别类、变量、函数或任何其它用户定义的项目。...标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。
type PHP type double double double float float64 float double float float float float float FLOAT32...这是因为: 必须有一个零值,以便我们可以使用0作为数字默认值。 零值必须是第一个元素,以便与proto2语义兼容,其中第一个枚举值始终是默认值。...float,double number 1.1, -10.0, 0, "NaN","Infinity" JSON值将是一个数字或一个特殊字符串值“NaN”,“Infinity”和“-Infinity”。...生成您的类 根据实际工作需要,生成以下对应语言的自定义消息类型Java,Python,C ++,Go, Ruby, Objective-C,或C#的.proto文件,你需要运行protobuf 编译器protoc...为了方便起见,如果DST_DIR结束于.zip或.jar,编译器会将输出写入具有给定名称的单个ZIP格式存档文件。.jar输出还将根据Java JAR规范的要求提供清单文件。
Java数据类型详解 第三章 Java的基本程序设计结构 3.3 数据类型 3.3.1 整型 3.3.2 浮点类型 三个特殊的浮点值 3.3.3 char类型 3.3.4 Unicode与char类型...6-7位) double 8 Byte +/- 1.797 693 134 862 315 70E+308 (有效位数15位) 大多数情况下使用double,因为很多情况下float很难满足需求。...当需要对接单精度数据库或存储大量数据时,可视情况选择float。 float数值后有f或F,没有后缀的浮点值通常默认为double类型。...三个特殊的浮点值 Infinity:正无穷大(非零数除以零) -Infinity:负无穷大 NaN:非数(零除以零) 以上分别可以用Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY...例如sout(2-1.1)将打印0.899999…。如果不允许误差,应该使用BigDecimal类。
proto 生成文件类型 当.proto运行协议编译器时,会根据选择的语言将消息序列化成输出流,并从输入流解析消息。...详细信息可以查看API Reference: proto 中支持的类型 .proto Notes C++ Java Python Go Ruby C# PHP double double double...float float64 Float double float float float float float float32 Float float float int32 Uses variable-length...设置任何成员自动清除所有其他成员。 您可以根据您选择的语言检查使用 case() or WhichOneof()方法设置一个值(如果有)。...optional: 格式正确的消息可以具有该字段的零个或一个(但不超过一个)。 repeated: 该字段可以在格式正确的消息中重复任意次数(包括零)。 重复值的顺序将被保留。
int sum(int a, int b) { return a + b; } float sum(float a, float b) { return a + b; } double sum(double...这样的设计理念,使得模板成为了一种将重复性的工作抽象化、自动化的工具,从而极大地提高了代码的复用性和开发效率。...比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将A确定为double类型,然 后产生一份专门处理double类型的代码: 就这样编译器生成一个个函数,将模版实例化,这是一种隐式实例化...模板函数不允许自动类型转换,但普通函数可以进行自动类型转换 2 类模板 什么是类模版 类模板(Class Templates):允许定义一个类,其成员函数和方法可以操作任何类型的数据。...特化分为:全特化与偏特化 全特化即是将模板参数列表中所有的参数都确定化 偏特化:任何针对模版参数进一步进行条件限制设计的特化版本。
Type PHP Type Dart Type double double double float float64 Float double float double float float float...float float32 Float float float double int32 使用可变长度编码。...而且protocol buffer编译器将根据你选择的语言生成服务接口代码和stubs。...float, double number 1.1, -10.0, 0, "NaN", "Infinity" JSON值为数字或特殊字符串值“ NaN”,“ Infinity”和“ -Infinity”之一...为了更加方便,如果DST_DIR以.zip或.jar结尾,则编译器会将输出写入具有给定名称的单个ZIP格式的文件中。根据Java Jar规范的要求,还将以.jar输出提供清单文件。
isNumber(double d){return (dd);}来判断d是否为nan,若d是nan则返回0,否则返回非零值。...注意: nan是无序的(unordered),它不大于、小于或等于任何数(包括它自己),所以,nannan 结果是0或false;另外将,=作用于nan产生一个exception;...注意: +inf大于任何数(除了它自己和nan);-inf小于任何数(除了它自己和nan); 得到inf时就查看是否有溢出或者除以0; 头文件中,有定义的常量DBL_MAX,这个常量表示...=FP_INFINITE)时,此宏得到一个非零值。 3、int isnormal(x) 当(fpclassify(x)==FP_NORMAL)时,此宏得到一个非零值。...(有些较早的编译器版本中,无论是正无穷还是负无穷,都返回非零值,不区分正负无穷)。
继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。...C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。...C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。 try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。...常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 常量可以被当作常规的变量,只是它们的值在定义后不能被修改。 常量是使用 const 关键字来定义的 。...; } } } C# 命名空间(Namespace) 命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。
它从System.Enum直接派生,枚举类型是值类型,但枚举方法不能定义任何方法、属性或事件。(P320 2)C#编译器将枚举类型视为基元类型。所以可用许多熟悉的操作符(==,!...(P329 1) (不明白C#为什么不像C++那些创建数组的看这里)第一行代码声明myIntegers变量,它能指向包含Int32值的一维数组。...) Int32[]ildim = new Int32[5]; //不能将值类型的数组转型为其他任何类型编译器报错: //error CS0030:无法将类型"int[]“转换为"object [ ]"...2、将引用类型的元素拆箱为值类型的元素,比如将一个Object[]复制到一个Int32[I中。 3、加宽CLR基元值类型,比如将一个Int32[]的元素复制到一个Double[]中。...这些数组有时称为SZ(single-dimensional, zero-based,一维О基)数组或向量(vector)。2、下限未知的一维或多维数组。 不安全(unsafe)访问:允许直接内存访问。
领取专属 10元无门槛券
手把手带您无忧上云