长浮子和双浮C++有什么区别?
What's the difference between LONG float and double in C++?
所以我知道浮点数和双精度数的精度有很大的不同。我明白了。承诺。
但是,在c++中,当调用scanf和printf时,用于指定双精度浮点数的符号是"%lf",它代表长浮点数,对吗?因此,虽然float比double精度低,但LONG float(可能被称为LONG float,因为它可以通过拥有更多项而"更长")具有相同的精度,因此本质上是相同的东西?
澄清一下,我的意思是:
double number = 3.14159;
printf("The number is %lf", number);
所以我的问题的根源:长float是double的另一个名字吗?
据我所知,没有long float
这种类型。
这篇文章告诉你为什么人们用lf
打印double
和printf
,如果这是你困惑的原因。
由@Jerry Coffin提供:
"%f"是(或至少是"a")正确的双精度类型格式。float没有格式,因为如果你试图传递一个float给printf,它会在printf接收到它之前被提升为double。 "%lf"在当前标准下也是可以接受的——如果后面跟着f转换说明符(以及其他),则l被指定为没有效果。
所以原因是当人们这样做的时候:
printf("The number is %lf", number);
相当于做:
printf("The number is %f", number); //l has no effect when printing double
printf
说明符名称与类型名称没有任何共同之处。
这样命名是为了使它们更短,更容易记住。
float -> double -> long - double
%f -> %f -> %f
(同样,他们不能将printf
双说明符命名为%d
,因为该名称已经为int
的十进制表示保留(与八进制%o
相比))
@taocp的答案解释了为什么您可以将%f
和%lf
与printf
一起使用,但请注意,您不能使用scanf
long float
是存在的K& C第一版类型。它是double
的同义词。
在第一个标准C89/C90之后,long float
被移除。不建议使用。C89/C90也是K&R C第二版。然后是被称为C94/C95的多语种修正案,它增加了wchar_t
以及<iso646.h>
等功能。
K&R C第一版的许多特性已弃用,但直到第二个标准C99才被删除。从C99中删除了自动返回类型为int,并删除了默认形参类型为int和double。C99标准要求函数原型,而不是函数声明,即int function_declaration();
和int function_prototype(void);
。它还删除了K&R C风格的原型。
// implicit int type
main(argc, argv)
char ** argv;
// explicit int type
int main(argc, argv)
int argc;
char ** argv;
c++早在C标准化之前就开始了。模板是在1983年标准化的,这使得编译成C代码变得更加困难。直到1998年才标准化。旧的编译器可能会弃用那些被更现代的编译器删除的旧特性。
%lf
是long float
的遗产,它被继承到C的标准库中。对于scanf
,传递一个指向结果存储位置的指针;用%f
读取float
值,用%lf
读取双精度值;您必须区分它们,因为float
和double
不需要具有相同的表示。对于printf
,你传递要显示的值,而float
的值被提升到double
,因为它们作为参数传递到原型的...
部分;也就是说,对于printf
, float
和double
之间没有区别,所以%f
和%lf
做同样的事情。
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?
- ascii 和 unicode 在处理级别有什么区别吗?
- C 中的常量限定符和 C++ 中的常量限定符有什么区别?
- "ABC" 和 "ABC" ) 在C++中有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 这两种C++语法之间有什么区别?
- lua 5.0.2 模块和 5.3.5 有什么区别?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- std::enable_if 和 std::enable_if_t 有什么区别?