相关疑难解决方法(0)

使用-1将所有位设置为true是否安全?

我已经看到这种模式在C&C++中使用了很多.

unsigned int flags = -1;  // all bits are true
Run Code Online (Sandbox Code Playgroud)

这是一个很好的便携式方法吗?或正在使用0xffffffff~0更好?

c c++ binary bit-fields

130
推荐指数
9
解决办法
3万
查看次数

是否保证将 -1 分配给无符号类型会产生最大值?

我发现了一些关于这个特定主题的问题,但它们都是关于 C++ 的。

将 -1 转换为无符号类型的便携性如何?

将 -1 转换为无符号类型

将 -1 分配给 unsigned int 以获得最大值是否安全?

在阅读答案时,这似乎是 C 和 C++ 不同之处之一,这似乎是可能的,或者至少不是不可能的。

问题很简单:

如果我声明一个变量unsigned char/short/int/long var或使用任何其他无符号类型,如固定宽度、最小宽度等,那么是否保证var = -1将设置var为它可以容纳的最大值?该程序是否保证打印“是”?

#include <stdio.h>
#include <limits.h>

int main(void) {
    unsigned long var = -1;
    printf("%s\n", var == ULONG_MAX ? "Yes" : "No");
}
Run Code Online (Sandbox Code Playgroud)

c unsigned

2
推荐指数
1
解决办法
53
查看次数

C++ 将无符号整数转换为有符号整数可移植性

我知道在 C 中,无符号整数到有符号整数的转换是实现定义的,但是对于 C++ 来说它是什么?我想已经有人问过这个问题了,我搜索了一下,但没有找到。

我有一个对无符号整数进行操作并返回相关无符号整数的函数。我通过转换为类似于 的无符号整数来向该函数传递一个有符号整数int num = -6; unsigned ret = func((unsigned)num); int ret_as_signed = (int)ret;。在 Visual Studio 中工作正常,但我想知道它的可移植性如何。

是否有一种可移植的方法将无符号整数转换为有符号整数?是否可以通过环绕反转有符号整数如何转换为无符号整数?谢谢

c++ standards signed

0
推荐指数
2
解决办法
1782
查看次数

标签 统计

c ×2

c++ ×2

binary ×1

bit-fields ×1

signed ×1

standards ×1

unsigned ×1