作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
要声明 float ,我们需要为 float 加上“f”,为 double 加上“d”。
例子:
float num1 = 1.23f; // float stored as float
float num2 = 1.23; // double stored as float. The code won't compile in C#.
据说如果省略浮点字面值,C# 默认为 double。
我的问题是,是什么阻止了像“C#”这样的现代语言对左侧变量类型的“默认”?毕竟,编译器可以看到整行代码。
这是编译器设计的历史原因吗?或者有什么我没有得到的。
最佳答案
我想说主要原因是可预测性和一致性。
假设您是编译器,您必须确定以下语句中文字 3.14
的类型:
float p = 3.14;
第一个很简单。显然,应该是一个 float 。
这个怎么样?
var x = 3.14 * 10.0f;
用户在 10.0
之后明确添加了一个 f
。所以那应该是一个float
,什么关于 3.14
? x
应该是 double
还是 float
?
还有这个:
bool b = 3.14 / 3.14f == 1;
第一个 3.14
是 double
还是 float
? b
的值就靠它了!
作为用户,我宁愿明确地添加一个 f
并且确切地知道我得到了什么。
关于C# 浮点文字 : Why compiler does not DEFAULTS to the left hand side variable type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697327/
我是一名优秀的程序员,十分优秀!