连接两个双变量
XORing two double variables
我写了两行:
第一行:
int a;
a=a^a;
第二行:
double d;
d=d^d;
第1行工作正常,但第2行给我错误:
error: invalid operands of types ‘double’ and ‘double’ to binary ‘operator^’
有人能告诉我为什么位的异或运算符在两个int上工作,但在两个双变量上不起作用…?
似乎是一个愚蠢的怀疑…但是如果没有这个,我真的无法完成我的课程!
因为标准是这么说的。
c++ 11§5.12位异或运算符
执行通常的算术转换;结果是操作数的按位异或函数。操作符仅适用于整型或枚举操作数。
在我看来,两个double
没有多大意义。
我认为其他答案很好地解释了为什么默认情况下不支持它。您可能不应该这样做,但是您可以这样做:
double d = 12345.6789;
unsigned long long* uPtr = (unsigned long long*)&d;
unsigned long long uXor = (*uPtr) ^ (*uPtr);
double dXor = *((double*)&uXor);
因为异或,像其他布尔位运算符一样,是为二进制操作定义的,例如0b10^0b01 = 0b11
,但对于表示与值不同的任何东西都没有意义。如果您对4.0
和1.0
进行异或,您应该得到值的异或,即5.0
或表示的位异或。如果是前者,你该如何处理精度没有完全重叠的值?'1.89e92 and
0.01 ' ?而后者甚至很难定义(并且可能没有意义),因为c++标准没有确切定义双精度类型的表示方式,并且在计算和存储期间可能会以不同的方式表示。
相关文章:
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 命令行参数,cant 或两个变量
- 在 for 循环中更新两个变量时遇到问题C++
- C++ 编译时在两个变量之间交替
- C++ 如何在包含两个变量的结构中存储与变量不同数量的值?
- 为什么一个接一个声明的两个变量在内存中不相邻?
- 为什么动态分配的两个变量的内存位置不是连续的?
- 是否可以在C++中使用宏交换两个变量的出现?
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 正确证明C 中的两个变量合理(我想将它们视为一个变量)
- 可视C 编译器将相同的存储位置提供给两个变量
- 尝试使用 {} 和 std::make_pair() 交换两个变量时的行为不同
- 在rootframework中的根文件中编写两个变量
- 最短路径,带有两个变量
- 加入两个变量和LCD打印
- 在循环中声明两个变量以逆转字符串?在C 中
- 具有两个变量的"for"循环,一个变量每次迭代递增,每隔一次迭代递增
- 如何在C++中使用一个类中两个变量的值
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 如何在我存储的两个变量之间生成随机数