C语言中float是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中float是啥意思相关的知识,希望对你有一定的参考价值。

我是出自学者,有很多不会的,float是什么东东,什么意思啊,还有在程序看到%f,%d,等等这样的东东,就晕菜了,不明白啊,有那位好心人给回答一下

C语言中float浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个
8 位 excess-127 二进制指数和一个 23 位尾数。

尾数表示一个介于 1.0 和 2.0 之间的数。由于尾数的高顺序位始终为
1,因此它不是以数字形式存储的。此表示形式为 float 类型提供了一个大约在 -3.4E+38 和 3.4E+38 之间的范围。

定义输入输出举例如下:

扩展资料


float和double的区别:

1.指数和尾数

由于指数是以无符号形式存储的,因此指数的偏差为其可能值的一半。对于 float 类型,偏差为 127;对于 double 类型,偏差为 1023。可以通过将指数值减去偏差值来计算实际指数值。

2.浮点类型

如果存储比精度更重要,请考虑对浮点变量使用 float 类型。相反,如果精度是最重要的条件,则使用 double 类型。浮点变量可以提升为更大基数的类型(从 float 类型到 double 类型)。当您对浮点变量执行算术时,通常会出现提升。此算术始终以与具有最高精度的变量一样高的精度执行。

参考技术A

float是C语言的基本数据类型中的一种,表示单精度浮点数。

C语言规定单精度浮点型在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38 ~3.4*10^38或者-(3.4*10^-38 ~3.4*10^38)

可以定义单精度浮点型变量,如float a;即定义了一个电精度浮点型变量a。相关类型:double表示双精度浮点数。

扩展资料:

构成:

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。

数符占 1 位二进制,表示数的正负。

指数符占 1 位二进制,表示指数的正负。

尾数表示浮点数有效数字,0.xxxxxxx, 但不存开头的 0 和点。

指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。

区别:

可根据应用程序的需求将变量声明为 float 或 double。这两种类型之间的主要差异在于它们可表示的基数、它们需要的存储以及它们的范围。

在 C 和 C++ 中,如下赋值语句:


1     float a=0.1; 

编译器报错:warning C4305: 'initializing' : truncation from 'const double ' to 'float '

原因:在 C/C++ 中,上述语句等号右边 0.1,认为是个 float,但是编译器却把它认为是个 double(因为小数默认是 double),所以要报这个 warning,一般改成0.1f就没事了。

参考资料:

百度百科-float

参考技术B float是c语言中的一个数据类型 它属于浮点型数据类 在浮点型变量中的单精度 你最好仔细研究一下关于这方面的书籍 不然你会越来越糊度 %f是输出浮点数时指定的格式符 %d是输出整数时指定的格式符本回答被提问者采纳 参考技术C float是C语言中的一个数据类型的关键字,表示单精度浮点型(双精度浮点型为double)。
定义格式为:float a; // a表示一个浮点型的变量
C语言规定浮点型在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38 ~3.4*10^38或者-(3.4*10^-38 ~3.4*10^38)
参考技术D float是定义变量类型的,单精度浮点型。
字长为4个字节共32位二进制数, 数的范围是3.4x10-38E~3.4x10+38E
其他类型还有Int(整型),Char(字符型)Double(双精度浮点型)。。。等等
%f,%d是分别表示float型和double型,跟在变量后的参数

既然是自学,最起码要有本书吧,这些基本语法书上很详细,在书上找就有了

"CONST func(arg);" 是啥意思在C语言中是啥意思?

【中文标题】"CONST func(arg);" 是啥意思在C语言中是啥意思?【英文标题】:What does "CONST func(arg);" mean in C language?"CONST func(arg);" 是什么意思在C语言中是什么意思? 【发布时间】:2011-08-27 01:11:49 【问题描述】:

This 是一个 c 程序,演示了 libxml2 库的一些基本用法。下面是从main函数中引用的:

LIBXML_TEST_VERSION example1Func(argv[1]);

这句话代表什么?

我只能说 LIBXML_TEST_VERSION 显然是一个常量,然后是一个函数调用,该函数什么也不返回(void)。但我不知道这句话的整体含义。

【问题讨论】:

我现在感到非常抱歉,因为我链接到的原始程序中的行实际上是两行。我想这是我的 IDE 的自动缩进系统做出了错误的决定。所以这个问题其实是没有意义的。 不过,你们的速度令人印象深刻! 没问题 - 今天我们都了解到:所有大写符号不一定都是常量,你不应该相信代码的格式,以及 LIBXML_TEST_VERSION 宏的作用。 ;-) 【参考方案1】:

LIBXML_TEST_VERSION 不是常量 - 它是一个宏 - 请参阅此处的文档:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible with the version the software has been compiled against

这也与调用example1func() 无关 - 代码应如下所示(cmets 是我的):

LIBXML_TEST_VERSION    // test libxml version

example1func();        // call example1func

【讨论】:

+1:这种宏很烦人,但正是因为这种混乱。如果宏没有定义结尾的;,我会更喜欢它,这至少会强制您使用; 明确地为实例添加后缀,从而减少视觉混乱。 @Oli:确实 - 通常多行宏应该包含在 do ... while (0) 中以允许使用终止分号【参考方案2】:

看起来LIBXML_TEST_VERSION 是一个扩展为一个或多个语句的宏。从Google code search 看来,定义类似于:

#define LIBXML_TEST_VERSION xmlCheckVersion(20703);

20703 是您正在编译的任何版本。

此语句独立于对example1Func() 的调用。

【讨论】:

【参考方案3】:

在 ALL_UPPERCASE 中命名 C 预处理器宏是标准约定。正如您所建议的,这通常用于编译时常量。但是,还有其他用途。

现在来看你的例子。原始出处是这样的(cmets 是我的):

LIBXML_TEST_VERSION    /* line 1 */
example1Func(argv[1]); /* line 2 */

第一行是一个 C 宏。第二行是函数调用。正如您的问题所暗示的那样,这两者不是同一陈述的一部分。不幸的是,LIBXML_TEST_VERSION 的定义方式在末尾不需要分号;如果是这种情况,就不会混淆这两行是否属于同一语句。

如果您想知道LIBXML_TEST_VERSION 到底是什么:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible
with the version the software has been compiled against

【讨论】:

以上是关于C语言中float是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

c语言里面的float是啥意思

float在C语言中是啥意思?具体的。double呢?谢谢!

C语言 显式 隐式是啥意思

c语言中double是啥意思

c语言NULL是啥意思?

C语言中,对枚举值赋值是啥意思?