在浮点值中添加/减去1值得专用的运算符有什么特别之处?
double a = -0.001234129;
a++; // ?
我从未觉得需要使用这样的结构;它看起来很奇怪。但如果我不得不这样做,我会感到更舒服:
a += 1;
也许是因为我强大的C ++背景,但对我而言,它使变量看起来像数组索引器。
这有什么理由吗?
答案 0 :(得分:8)
++
和--
运算符对所有其他数字类型进行操作,为什么浮点数会例外?对我来说,这将是更令人惊讶的选择。
请注意,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.5 1.5
答案 1 :(得分:2)
我的猜测是,原因是与C / C ++的一致性。
我同意你的意见,它有点奇怪 - '++'运算符对整数值有一些特殊含义:
但是,对于浮点数,值1.0不是任何特殊值(从机器的角度来看)。您也不应该将它用于迭代(换句话说:如果您正在使用它,您通常应该考虑使用int),并且它没有指定的INC汇编指令。