C++在0和0.0之间的差异

13 c++ double

C++中0和0.0之间有区别吗?你应该用什么来初始化双?

谢谢

Rob*_*Rob 15

文字0被认为是int文字; 文字0.0double字面意思.分配给a时double,任何一个都可以工作(因为int可以在扩展转换中进行转换); 但是,转换0.0为a int是一个缩小的转换,必须明确地完成; 即(int)0.0.

  • @Rob,你是说一个double不能隐式转换为int吗?考虑`int a = 0.0;`. (3认同)
  • 和0.0f是一个浮点值.:d (2认同)
  • 也许Rob在"避免在<insert compiler and flags here>上发出警告"意味着"必须"?在一个明显可以在int中表示的常量的情况下,这似乎有点过分.但一般来说,从double转换为int是危险的,因为它对于大值是未定义的,所以我当然同意缩小转换*应该*明确的概括. (2认同)

Nos*_*dna 10

我试着保持我的常量类型一致.0表示整数.浮点数为0.0f或0.f,双精度为0.0.

对我而言,执行此操作的最重要原因是编译器和程序员看到同样的事情.

如果我这样做......

float t=0.5f;
float r;

r= 1 * t;
Run Code Online (Sandbox Code Playgroud)

......应该分配0或.5?如果我这样做,毫不犹豫......

float t=0.5f;
float r;

r= 1.0f * t;
Run Code Online (Sandbox Code Playgroud)

  • 是的,如果 C 想要支持浮点十六进制文字,它就会遇到麻烦,不是吗?:-) (2认同)

Jim*_*nis 5

一个似乎是整数字面值,另一个是浮点字面值.对于编译器来说,使用整数文字初始化浮点数还是双精度数并不重要.无论如何,文字将被编译成一些内部表示.

我倾向于建议0.0,以使你的意图(对其他程序员)明确清楚.