为什么C#为浮点类型实现前/后递增/递减运算符
本文关键字:运算符 实现 类型 为什么 | 更新日期: 2023-09-27 18:20:16
浮点值加减1有什么特别之处,值得使用专用运算符?
double a = -0.001234129;
a++; // ?
我从未觉得有必要使用这样的结构;这对我来说真的很奇怪。但如果必须的话,我会对感到更舒服
a += 1;
也许是因为我强大的C++背景,但对我来说,它让变量看起来像数组索引器。
这有什么原因吗?
++
和--
运算符对所有其他数字类型进行运算,为什么要为浮点数字破例?对我来说,这将是一个更令人惊讶的选择。
注意,C++还为浮点实现了这些:
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double a = 0.5;
cout << a << ''n';
++a;
cout << a << ''n';
return 0;
}
输出:
0.51.5
我的猜测是原因是与C/C++的一致性。
我同意你的看法,这有点奇怪——"++"运算符对整数值有一些特殊的含义:
- 它转换为INC汇编指令
- 它表示将值更改一个特殊的量(即尽可能小的量),因此它在迭代中使用
然而,对于浮点数字,值1.0不是任何特殊值(从机器的角度来看)。你也不应该在迭代中使用它(换句话说:如果你正在使用它,你通常应该考虑使用int),因为它没有指定的INC汇编指令。