C++处理嵌入式与浮动

在C++中有两种类型的数字。整数和浮动。这些类型也有一些变体,它们包含较大的数字,或者只包含无符号数字,但它们仍然是整数或浮点数。...

01

08年

C++中的所有数字

在C++中有两种类型的数字。整数和浮动。这些类型也有一些变体,它们包含较大的数字,或者只包含无符号数字,但它们仍然是整数或浮点数。

整数是一个类似于47的整数,没有小数点。你不能生4.5个孩子,也不能生32.9次。如果你使用浮动汇率,你可以得到25.76美元。因此,在创建程序时,必须决定使用哪种类型。

为什么不直接使用浮动呢?

有些脚本语言就是这样做的?因为它的效率很低,浮点数占用更多的内存,并且通常比整数慢。此外,您无法轻松地比较两个浮点值,以查看它们是否与整数相同。

要处理数字,必须将它们存储在内存中。因为这个值很容易更改,所以它被称为变量。

  • 阅读“什么是变量”中有关变量的更多信息?

读取程序并将其转换为机器代码的编译器需要知道它是什么类型,即是int还是float,因此在程序使用变量之前,必须声明它。

这里有一个例子。

int计数器=0;

您会注意到计数器变量被设置为0。这是一个可选的初始化。初始化变量是一个很好的实践。如果在没有设置初始值的情况下不进行初始化,然后在代码中使用它们,那么变量将以一个随机值开始,该值可能会“破坏”代码。该值将是加载程序时内存中的任何值。

02

08年

更多关于ints的信息

整数可以存储的最大数字是多少?。嗯,这取决于CPU的类型,但它通常被接受为32位。因为它可以容纳几乎与正值一样多的负值,所以值的范围是+/-2-32到232或-2147483648到+2147483647。

这是一个有符号整数,但也有一个无符号整数,它包含零或正。它的范围为0到4294967295。请记住-无符号整数前面不需要符号(如+或-1),因为它们始终为正或0。

短整数

有一种较短的int类型,巧称为short int,它使用16位(2字节)。这将保存范围在-32768到+32767之间的数字。如果使用大量整数,则可以通过使用短整数来节省内存。它不会更快,尽管只有一半大小。32位CPU从内存中一次获取4字节块的值。即32位(因此得名为-32位CPU!)。因此,获取16位仍然需要获取32位。

C中有一个较长的64位称为长长。一些C++编译器不支持该类型,而是直接使用一个替代名称——例如Borland和微软都使用了其范围为-9223372036854775807到9223372036854775807(已签名)和0到18446744073709551615(未签名)。

与整数一样,有一个范围为0..65535的无符号短整数类型。

注:某些计算机语言将16位表示为一个单词。

03

08年

精确算法

双重麻烦

没有长浮点,但有一个双类型,是浮点的两倍大。

  • 浮点:占用4个字节。范围为17x10-38至1.7x1038
  • Double:占用8个字节。范围3.4x10-308至3.4308

除非你在用非常大或非常小的数字进行科学编程,否则你只能使用双精度。浮点数的精度为6位数,而双精度浮点数的精度为15位数。

精确

考虑数字567.8976523。它是一个有效的浮点值。但如果我们用下面的代码打印出来,你会发现精度不够。数字有10位,但存储在浮点变量中,精度只有6位。

#包括<iostream>

有关cout如何工作以及如何使用精度的详细信息,请参见关于输入和输出。此示例将输出精度设置为8位。不幸的是,float只能容纳6,一些编译器会发出关于将double转换为float的警告。运行时,将打印出567.89764

如果将精度更改为15,则打印为567.897644042969。完全不同!现在向左移动小数点2,使值为5.678976523,然后重新运行程序。这次它输出5.67897653579712。这更准确,但仍然不同。

如果将值的类型更改为double,将精度更改为10,则将完全按照定义打印值。作为一般规则,浮点数对于小的非整数很方便,但对于超过6位的数字,必须使用双精度浮点数。

04

08年

了解算术运算

如果你不能做加法、减法等,编写计算机软件就没有多大用处。下面是例子2。

//ex2numbers.cpp

示例2的说明

声明了三个int变量。A和B为赋值,然后total为A和B之和赋值。

在运行此示例之前

在运行命令行应用程序时,这里有一个节省时间的小技巧。

当您从命令行运行此程序时,它应输出“数字为22”。

其他算术运算

除了加法,你还可以做减法、乘法和除法。只需将+用于加法、-用于减法、*用于乘法和/或除法。

尝试更改上述程序-使用减法或乘法。您还可以将整数更改为浮点或双精度。

使用浮点数时,除非如前所示设置精度,否则无法控制显示多少小数点。

05

08年

使用cout指定输出格式

输出数字时,需要考虑数字的这些属性。

  • 宽度-整个数字需要多少空间
  • 对齐-左或右-数字倾向于右对齐
  • 小数位数
  • 负数的符号或括号。
  • 数千个分离器。没有这些,大数字看起来很难看。

现在,cout对象和iomanip include文件函数可以设置宽度、对齐方式、小数位数和符号。

数千个分离器稍微复杂一些。它们是从PC的区域设置的。区域设置包含与您所在国家相关的信息,例如货币符号、小数点和千位分隔符。在英国和美国,数字100.98使用小数点。作为小数点,而在一些欧洲国家,它是一个逗号,因此5,70欧元意味着5欧元70美分的价格。

int main()

这个函数的输出是

=======该值为925678.875000

06

08年

关于语言环境和moneypunct

该示例在行中使用了来自PC的locale对象

地点loc(“”);

线路

const moneypunct<char,true>&mpunct=使用方面<moneypunct<char,true>(loc);

创建一个对象mpunct,该对象是对moneypunct模板类的引用。这包含有关指定区域设置的信息-在我们的示例中,数千_sep()方法返回用于千分隔符的字符。

不排队

法庭灌输(loc);

不会有千分之一的分离机。尝试注释它并重新运行程序。

请注意,在cout.imbue的行为方面,不同编译器之间似乎存在差异。在Visual C++ 2005 Express版本下,这包括分隔符。但是微软Visual C++ 6的代码没有!

小数点

上一页的示例使用showpoint显示小数点后的尾随零。它以所谓的标准模式输出数字。其他模式包括

  • 固定模式-显示数字,如567.8
  • 科学模式-显示数字,如1.23450e+009

如果通过cout.setf使用这两种格式模式中的任何一种,则precision()会设置小数点后的小数位数(而不是总位数),但会丢失数千位格式。此外,尾随零(由ios_base::showpoint启用)将自动启用,而无需showpoint。

07

08年

使用INT、floats和BOOL时要注意的事项

看看这句话。

浮动f=122/11;

您可能期望值为11.0909。事实上,这个值是11。为什么会这样?因为右侧的表达式(称为右值)是整数/整数。因此,它使用整数算法,丢弃小数部分,将11赋值给f。改成

浮动f=122.0/11

我会改正的。这是一个非常简单的问题。

类型bool和int

在C语言中,没有bool这样的类型。C中的表达式基于零为假或非零为真。在C++中,类型布尔可以将值取为真或假。这些值仍然等于0和1。在编译器的某个地方,它将有一个

常数int false=0;

或者至少它是这样做的!下面的两行在不强制转换的情况下是有效的,因此在幕后,bool被隐式转换为int,甚至可以递增或递减,尽管这是非常糟糕的做法。

布尔-弗雷德=0;

看看这个代码

布尔坏=真;

if仍然会执行if,因为坏变量不是零,但它是坏代码,应该避免。良好的实践是按预期使用它们。如果(v)是有效的C++,但我更喜欢更明确的(v!=0)。然而,这是一个品味的问题,而不是一个必须做的指令。

08

08年

使用枚举获得更好的代码

要更深入地了解枚举,请先阅读本文。

  • 什么是枚举?

枚举类型提供了一种将变量限制为一组固定值之一的方法。

枚举彩虹色{红、橙、绿、黄、蓝、靛、紫}; 枚举彩虹颜色{红色=1000,橙色=1005,绿色=1009,黄色=1010,蓝色,靛蓝,紫色}; 黄色=1010

可以将枚举值指定给int,如中所示

int p=红色; 彩虹色g=1000;//错误 彩虹色g=红色; 类型安全 编译器在编译时捕获错误比用户在运行时捕获错误更好

尽管这两种说法在概念上是相同的。事实上,你通常会发现这两条看似相同的线

int p=1000;

这就完成了本教程。下一个教程是关于表达式和语句的。

  • 发表于 2021-10-17 04:01
  • 阅读 ( 233 )
  • 分类:数学

你可能感兴趣的文章

为什么c编程仍然值得学习

...言。值得注意的应用包括操作系统、编程语言和编译器、嵌入式系统、游戏引擎等。 ...

  • 发布于 2021-03-13 03:02
  • 阅读 ( 309 )

c编程的特点,使其独特(和更好)

...些最早出现在C语言中的特性。它已被广泛用于为最小的嵌入式微型计算机向最大的大型机和超级计算机编写软件。 ...

  • 发布于 2021-03-13 04:35
  • 阅读 ( 207 )

为什么python不是适合您的编程语言

...Python,但它并不是最适合这项工作的语言。在许多底层和嵌入式系统中,Python不是一个选项。 ...

  • 发布于 2021-03-23 11:47
  • 阅读 ( 351 )

java(java)和java核心技术(core java)的区别

...关的,这使得它成为为各种平台(包括移动电话、网站、嵌入式系统、服务器等)开发应用软件的理想选择。核心java是指java标准版(java SE),它是java平台的基本基础,用于开发桌面和服务器的企业级应用程序。 水平 Java是初...

  • 发布于 2021-06-25 05:49
  • 阅读 ( 293 )

java(java)和j2ee架构(j2ee)的区别

...,随处运行”的语言,这使得它成为网站、服务器、**、嵌入式系统等各种平台的首选,提供了一个与体系结构无关的环境来开发大型企业应用程序。 java和j2ee中的组件 Java语言的三个主要组件是Java虚拟机(JVM)、Java开发工具包...

  • 发布于 2021-06-25 07:07
  • 阅读 ( 334 )

python(python)和c级++(c++)的区别

...是一种静态类型的语言,其中程序在编译时确定。Python是嵌入式计算中发展最快的语言之一。 &#13;

  • 发布于 2021-06-25 22:55
  • 阅读 ( 445 )

打破(break)和在C++中继续(continue in c++)的区别

...效程序的有用工具,用于开发操作系统、设备驱动程序、嵌入式系统、图像处理应用程序和研究。在编程中,有时需要一次又一次地重复同一组指令。循环有助于多次迭代一组指令。执行循环时,有时需要跳过循环内的语句或终...

  • 发布于 2021-07-01 04:32
  • 阅读 ( 233 )

C(c)和C++(c++)的区别

...效的程序。操作系统、网络驱动程序、编译器、数据库、嵌入式系统、语言解释器和文本编辑器是我们可以使用C语言开发的一些常见应用程序。 什么是C++(c++)? C++是贝尔实验室Bjarne Stroustrup开发的一种编程语言。它比C语言有更...

  • 发布于 2021-07-01 12:20
  • 阅读 ( 230 )

C++(c++)和JAVA(java)的区别

...效编译器。它还将系统软件、应用软件、设备驱动程序、嵌入式软件、高性能服务器和客户端应用程序作为其应用领域的一部分,以及视频游戏等娱乐软件。 C++最初是作为C语言的增强而开始的。它被设计成与C源和链接兼容。...

  • 发布于 2021-07-13 05:42
  • 阅读 ( 212 )

C++(c++)和c级#(c#)的区别

...效编译器。它还将系统软件、应用软件、设备驱动程序、嵌入式软件、高性能服务器和客户端应用程序作为其应用领域的一部分,以及视频游戏等娱乐软件。 C++最初是作为C语言的增强而开始的。它被设计成与C源和链接兼容。...

  • 发布于 2021-07-13 05:45
  • 阅读 ( 186 )
jsindhrqay
jsindhrqay

0 篇文章

相关推荐