cost 70 ms
如何识别 integer 中的晋升和 C 中的降级? - How can I identify an integer promotion and a demotion in C?

我正在学习 C 和 integer 提升和降级这个词对我来说是新的。 我在 C Standard (C17) 中读到了关于 C 类型转换和 integer 提升的信息,但我不知道如何识别 integer 提升,我对降级一无所知。 例如,如果我有这些代码行: 哪里有integer促销? 因为据我所知 ...

C 中的定点算术 long long int 表示问题 - Fixed point arithmetic long long int representation issue in C

我正在努力实现在其 integer 部分中设置值 1 的有符号 long long int 变量。 查看带有有符号 long int 变量的 16.16 实现,它的工作原理如下: 这导致以下表示: 0001.0000 不幸的是,我无法让它在 32.32 表示中工作: 我收到以下 gcc 警告: wa ...

stdint.h 的类型转换和 integer 提升是如何工作的? - How does type conversion and integer promotion work for stdint.h?

在 C 中,我了解标准类型的类型转换、integer 提升、转换等,但是 stdint.h 类型如何影响这一点? 对于类型排名,规则 state: 任何两个带符号的 integer 类型都不应具有相同的等级,即使它们具有相同的表示形式。 任何无符号 integer 类型的等级应等于相应有符号 in ...

(在哪里)C 标准是否定义了加/减两个布尔值的结果? - (Where) does the C standard define the result of adding/subtracting two booleans?

C11 标准将_Bool类型(6.2.5.2)定义为标准无符号 integer 类型(6.2.5.6),当我阅读标准时, _Bool也是一种算术类型(6.2.5.18 通过 6.2.5.7 和 6.2.5.17) . 此外,指定对于+和- “两个操作数都应具有算术类型,或者一个操作数应是指向完整 ...

避免数组索引提升以期获得更好的性能 - avoiding array index promotion in hopes of better performance

我有一个巨大的整数数组,这些整数不大于0xFFFF 。 因此,我想节省一些空间并将它们存储为unsigned short 。 后来我会使用这个数组如下 当我只使用 2 个字节来存储我的整数时,它们在用作数组索引时被提升为 4 个或 8 个字节(取决于架构)。 速度对我来说非常重要,因此我是否应该将整 ...

按位或和强制转换操作数的转换警告 - Conversion Warning with Bitwise Or and Casted Operands

代码片段 1(如下所示)产生以下 -Wconversion 警告: 代码片段 2 和 3 不会产生 -Wconversion 警告。 代码片段 1: 代码片段 2: 代码片段 3: 为什么第一个代码片段会产生警告,而其他代码片段不会? 导致警告的具体原因是什么? 我觉得这很令人困 ...

为什么 printf 的 hh 和 h 长度修饰符存在? - Why does printf's hh and h length modifiers exist?

在可变参数函数中,会发生默认参数提升。 6.5.2.2.6 如果表示被调用函数的表达式的类型不包含原型,则对每个参数执行整数提升,而float类型的参数提升为double 。 这些称为默认参数提升。 [...] 6.5.2.2.7 [...] 函数原型声明符中的省略号会导致参数类 ...

使用最小的必要 C 类型与仅使用 int - Using smallest necessary C type vs just using int

给定一个 C 函数(随机示例): 使用unsigned char是通过告诉编译器传递的值的限制来帮助编译器,还是通过阻止编译器使用本机int (或unsigned int )大小来阻碍编译器? 我知道历史上使用short并不理想,因为 16 位操作不是原生的。 我不知道这是否适用于这里(或一般 ...

为什么用 0xff 对字符进行按位与? - Why do a bitwise-and of a character with 0xff?

我正在阅读一些实现简单解析器的代码。 名为scan的 function 将一行分解为标记。 scan有一个 static 变量bp ,它分配了要标记的行。 在赋值之后,空白被跳过。 见下文。 我不明白的是为什么代码会按位和bp指向的字符0xff ,即* bp & 0xff的目的是什么? ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM