74得票5回答
类型转换 - 无符号整数到有符号整数/字符

我尝试执行以下程序:#include <stdio.h> int main() { signed char a = -5; unsigned char b = -5; int c = -5; unsigned int d = -5; if...

13得票7回答
C编译器如何处理无符号和有符号整数?为什么无符号和有符号算术运算的汇编代码相同?

我正在阅读《CS-APPe2》这本书。C语言有无符号和有符号的int类型,在大多数架构中使用二进制补码算术来实现有符号值;但是在学习了一些汇编代码后,我发现很少有指令区分有符号和无符号。所以我的问题是: 编译器是否有责任区分有符号和无符号?如果是,它是如何做到的? 谁来实现二进制补码算术 ...

12得票6回答
有人可以解释一下 char 的有符号性如何与平台相关吗?

我最近看到了关于char unsigned char 并且signed char 是平台特定的。 我无法完全理解这个意思。它是否意味着比特序列可以因平台而异,例如在平台1中符号位是第一位,在平台2中符号位可能在结尾处?如何编写反对此的代码? 基本上我的问题是从看到这行代码开始的:typede...

12得票8回答
字符的有符号性带来的最严重副作用是什么?(解释字符的有符号性对强制转换的影响)

我经常使用在C++中使用char处理字节的库。另一种选择是将“Byte”定义为unsigned char,但这不是他们决定使用的标准。我经常将字节从C#传递到C++ dlls并将它们转换为char以与库一起使用。 当将int转换为char或char转换为其他简单类型时,可能会出现哪些副作用?...

10得票9回答
浮点数的符号

有没有一种简单的方法来确定浮点数的符号? 我做了实验,得出了以下代码:#include <iostream> int main(int argc, char** argv) { union { float f; char c[4]; }; f = -0.0f;...

10得票1回答
每当我处理无符号值时,我是否应该始终使用“unsigned”?

通常情况下,数值都是正数。例如TCP/UDP序号始终为正值。无论是int还是unsigned int类型足以存储最大的序号,因此我们可以使用任一类型。还有很多其他例子,数值都是正的。 当常规signed类型的容量足够(并且通常超过要求)时,是否有使用unsigned类型的理由? 个人倾向于...

8得票2回答
对于任何有限的浮点数值,x - x == 0是否保证成立?

浮点数 的值是不精确的,这就是为什么我们很少在比较中使用严格的数字相等性。例如,在 Java 中,这将打印false(如 ideone.com 上所见): System.out.println(.1 + .2 == .3); // false 通常比较浮点数计算结果的正确方法是查看与某个...