signed相关内容

任何将 'char' 视为 'unsigned' 的编译器?

是否有任何 C 编译器将默认类型的 char 视为无符号,除非用户在文件或项目设置中明确提及? /卡努_ 解决方案 GCC 可以.但仅在为约定为 unsigned char 的平台编译时,包括 ARM linux[*].当 GCC 为 x86 编译时,默认为 char 被签名. [*] 或者至少在过去是这样.据我所知,从那以后,Linux 已经在 ARM 上切换到了不同的默认 ..
发布时间:2022-01-12 20:36:17 其他开发

在 C 中左移 (char) 0xFF 8 并将其转换为 int

在 (char) 0xff 左移 8 并将其转换为 int 时,我们得到 -256 或 0xffffff00.有人可以解释为什么会发生这种情况吗? #include int 主要(无效){字符 c = 0xff;printf("%d %x\n", (int)(c 输出是 -256 ffffff00 解决方案 char 可以是有符号或无符号的——它是由实现定义的.您会看到 ..
发布时间:2022-01-12 20:33:34 其他开发

为什么在 C++ 中未定义有符号字符的 256

阅读 C++ Primer 5th edition book,我注意到一个值为 256 的 signed char 是未定义的.我决定尝试一下,我发现 std::cout 不适用于该 char 变量.(无印刷). 但是在 C 上,同样的事情signed char c = 256;将为 char c 提供一个值 0. 我尝试搜索但没有找到任何东西. 有人可以向我解释为什么在 C++ ..
发布时间:2022-01-12 20:24:57 C/C++开发

char 默认是有符号还是无符号?

在“C 的完整参考"一书中提到 char 默认是无符号的. 但我正在尝试使用 GCC 以及 Visual Studio 来验证这一点.它默认将其作为 已签名. 哪个是正确的? 解决方案 书错了.该标准没有指定普通 char 是有符号还是无符号. 事实上,该标准定义了三种不同的类型:char、signed char 和 unsigned char.如果你 #include ..
发布时间:2022-01-12 19:57:21 其他开发

为什么负整数比正整数多一个?

任何 int 数据类型(不包括 tinyint)的上限总是比下限的绝对值小一. 例如,int 的上限为 2,147,483,647,而 ABS(下限)= 2,147,483,648. 负整数总比正整数多一个有什么原因吗? 编辑:已更改,因为问题与数据库没有直接关系 解决方案 您提供的类型是有符号整数.让我们看一个字节(8 位)的例子.使用 1 个字节,您有 2^8 组合, ..
发布时间:2022-01-09 20:02:57 其他开发

为什么 -INT_MIN = INT_MIN 在有符号的二进制补码表示中?

我仍然没有找到为什么最小的有符号负数没有等效的有符号正数的原因?为简单起见,我的意思是 3 位二进制数100是-4?但我们不能有一个正4的签名格式,因为我们不能.它溢出了.那么我们如何知道二进制补码 1000 是 -4 1000 0000 是 -128 等等?我们没有原始的正数 解决方案 一种思考方式是有符号的二进制补码格式的工作原理是为每个位分配一个 2 的幂,然后翻转最后一个 2 的幂 ..
发布时间:2022-01-09 19:09:21 C/C++开发

迭代 std::vector:无符号与有符号索引变量

在 C++ 中迭代向量的正确方法是什么? 考虑这两个代码片段,这个可以正常工作: for (unsigned i=0; i 还有这个: for (int i=0; i 生成警告:有符号和无符号整数表达式之间的比较. 我是 C++ 世界的新手,所以 unsigned 变量对我来说看起来有点吓人,我知道 unsigned 变量如果使用不当会很危险,所以 - 这是正确的吗? ..
发布时间:2022-01-07 10:54:14 C/C++开发

C/C99/C++/C++x/GNU C/GNU C99 中枚举的签名

enum 类型是有符号的还是无符号的?枚举的符号性是否不同:C/C99/ANSI C/C++/C++x/GNU C/GNU C99? 谢谢 解决方案 枚举保证由整数表示,但实际类型(及其符号)取决于实现. 您可以通过为枚举器之一赋予负值来强制枚举由有符号类型表示: enum SignedEnum { a = -1 }; 在 C++0x 中,可以显式指定枚举的基础类型: e ..
发布时间:2021-12-29 16:25:53 C/C++开发

为什么我们将 INT_MIN 定义为 -INT_MAX - 1?

AFAIK 这是一个标准的“成语" #define INT_MIN (-INT_MAX - 1)# 定义 INT_MAX 2147483647 问题:为什么INT_MIN的定义不是-2147483648? 解决方案 因为 2147483648 是一个 long 值,因为它不适合 int(在具有 32 位 int 和 64 位 long 的普通系统中,在具有 32 位 long 的系统中 ..
发布时间:2021-12-25 13:10:59 其他开发

什么是零宽度位域

可能的重复: 零长度位域的实际使用 为什么有些结构有零宽度位域,为什么需要它? struct foo {输入:3;国际b:2;整数:0;//强制对齐到下一个边界.国际 c:4;国际 d:3;};int main(){int i = 0xFFFF;struct foo *f = (struct foo *)&i;printf("a=%d\nb=%d\nc=%d\nd=%d\n", f->a ..
发布时间:2021-12-23 17:29:35 其他开发

指针(地址)可以为负数吗?

我有一个函数,我希望能够为失败和未初始化返回特殊值(它在成功时返回一个指针). 目前它返回 NULL 表示失败,-1 表示未初始化,这似乎有效……但我可能在欺骗系统.IIRC,地址总是正数,不是吗?(尽管由于编译器允许我将地址设置为 -1,这看起来很奇怪). [更新] 我的另一个想法(如果 -1 有风险)是 malloc 一个字符 @ 全局范围,并将该地址用作哨兵. 解决方 ..
发布时间:2021-12-13 13:20:50 其他开发

检测 C/C++ 中的有符号溢出

乍一看,这个问题似乎是 How检测整数溢出?,但实际上有很大不同. 我发现虽然检测无符号整数溢出非常简单,但检测 C/C++ 中的有符号溢出实际上比大多数人想象的要困难. 最明显但最幼稚的方法是: int add(int lhs, int rhs){int sum = lhs + rhs;if ((lhs >= 0 && sum ..
发布时间:2021-12-02 08:29:11 C/C++开发

无符号和有符号整数的比较运算

查看此代码片段 int main(){无符号整数 a = 1000;int b = -1;if (a>b) printf("A 很大!%d\n", a-b);else printf("a 很小!%d\n", a-b);返回0;} 这给出了输出:a is SMALL: 1001 我不明白这里发生了什么.> 运算符在这里如何工作?为什么“a"比“b"小?如果它确实更小,为什么我得到一个正数( ..
发布时间:2021-12-01 23:56:39 其他开发

默认情况下,char 是有符号的还是无符号的?

在“Complete Reference of C"一书中提到char默认是无符号的. 但我正在尝试使用 GCC 和 Visual Studio 验证这一点.它默认将其视为签名. 哪个是正确的? 解决方案 书错了.该标准没有指定普通 char 是有符号还是无符号. 事实上,标准定义了三种不同的类型:char、signed char 和 unsigned char.如果你# ..
发布时间:2021-12-01 23:41:46 其他开发

如果将负值赋给无符号变量会发生什么?

我很想知道如果我将一个负值赋给一个无符号变量会发生什么. 代码看起来有点像这样. unsigned int nVal = 0;nVal = -5; 它没有给我任何编译器错误.当我运行程序时,nVal 被分配了一个奇怪的值!会不会是一些 2 的补码值被分配给了 nVal? 解决方案 官方回答 - 第 4.7 节 conv.integral "如果目标类型是无符号的,则结果值是 ..
发布时间:2021-12-01 15:40:00 C/C++开发

C++ 将十六进制字符串转换为有符号整数

我想在 C++ 中将十六进制字符串转换为 32 位有符号整数. 因此,例如,我有十六进制字符串“ffeffeffe".它的二进制表示是 11111111111111101111111111111110.它的有符号整数表示是:-65538. 我如何在 C++ 中进行这种转换?这也需要适用于非负数.例如十六进制字符串“0000000A",二进制为0000000000000000000000 ..
发布时间:2021-12-01 15:14:39 C/C++开发

如何使用 cat 文件安装驱动程序?

我有内核驱动程序.在 32 位系统和 Windows XP 及以下系统上安装时,我没有问题并使用 SetupCopyOEMInf,但需要签名 64 位驱动程序.我已经签署了它,我需要在计算机上的某处复制一个带有驱动程序的 cat 文件,但这种安装方法不起作用.我应该如何安装它? 编辑:澄清问题. 解决方案 在 Windows Vista 和 Windows 7 中有一个用于处理驱动程 ..
发布时间:2021-11-25 06:17:08 C#