相关疑难解决方法(0)

可以浮动(或加倍)设置为NaN吗?

注意:类似于Can,整数在C++中是否为NaN?

我明白这没什么实际意义,但可以设定float还是double设定NaN

java floating-point double nan

21
推荐指数
3
解决办法
2万
查看次数

C++ 14是否在unsigned int的填充位上定义了按位运算符的行为?

C++标准

如果C++ 14 实现在a的基础字节中包含填充位unsigned int,那么标准是否指定是否必须在填充位上执行按位运算?

另外,C++ 14标准是否指定相等和关系运算符是否必须忽略填充位?

方针

如果在这个问题上缺乏规范,那么这些运算符在填充位上的预期行为是否存在某种共识?

我在Stack Overflow上找到了相互矛盾的答案.轨道中的亮度竞赛ecatmur说,按位运算符不适用于算术,因为它们应用于所有位(包括填充位),而ChristophBartek Banachewicz表示按位运算符处理整数的逻辑值并忽略填充.

参考

相关的答案:在填充比特的存在(1, 2, 3),在没有明确的C++规范(4).

C++中填充位的定义14 - 第3.9.1节 - 基本类型:

对于窄字符类型,对象表示的所有位都参与值表示.对于无符号窄字符类型,值表示的所有可能位模式表示数字.这些要求不适用于其他类型.

C++中对象表示和值表示的定义14 - §3.9 - 类型:

类型对象的对象表示是由类型对象占据TN个 unsigned char对象的序列T,其中N等于sizeof(T).对象的值表示是保存type值的位集T.对于简单的可复制类型,值表示是对象表示中的一组位,用于确定,该是实现定义的值集的一个离散元素.44

脚注44)意图是C++的内存模型与ISO/IEC 9899编程语言C的内存模型兼容.

C++中按位AND的定义14 - §5.11 - 按位AND运算符:

执行通常的算术转换; 结果是操作数的按位AND功能.运算符仅适用于整数或无范围的枚举操作数.

C++中添加的定义14 …

c++ bitwise-operators unsigned-integer unspecified-behavior c++14

10
推荐指数
1
解决办法
492
查看次数

int a; ...; (a == a)失败了吗?

如果我们将floatdouble类型设置为NaN,则它们不等于包括它们在内的任何东西.int
会发生这样的事吗?

c++

7
推荐指数
2
解决办法
761
查看次数

为什么整数不代表Java中的NaN?

当我写的东西像

double a = 0.0;
double b = 0.0;
double c = a/b;
Run Code Online (Sandbox Code Playgroud)

结果是Double.NaN,但是当我为整数尝试相同时,它产生一个ArithmeticException.那么,为什么不存在Integer.NaN呢?

java double integer nan

7
推荐指数
2
解决办法
7652
查看次数

Why is there no std::copysign specialization for integers in c++?

I tried using std::copysign to set an int with the sign of another.

int translate = getTranslate();
int offset = getOffset();
translate = std::copysign(offset, translate)
Run Code Online (Sandbox Code Playgroud)

But copysign<int, int> returns a double. How should I use it better? Or what should I use instead?

c++

5
推荐指数
1
解决办法
251
查看次数