Tag: 类型

fseek到32位无符号偏移量

我正在读取一个文件格式(TIFF),它从文件的开头有32位无符号偏移量。 不幸的是fseek的原型,通常我会去特定的文件偏移,是: int fseek ( FILE * stream, long int offset, int origin ); 所以偏移是签名的。 我应该如何处理这种情况? 我应该使用不同的function进行搜索吗?

将短裤数组转换为双精度数组

如何在C / C ++中将short类型的数组转换为double类型的数组? 我有代码从wav文件中读取音频数据,输出是short类型的数组。 所以现在我想将这些数据用于FFT(我不想使用库)。 任何技巧或想法?

C类型之间的区别int32_t int_least32_t等

我曾经读过int32_t是32位长,int_least32_t只有至少32位,但是我的stdint.h中有两个相同的typedef: typedef int int_least32_t; 和 typedef int int32_t; 那么区别在哪里? 他们完全一样……

错误:参数的类型不兼容

我正在用C写一个列表。以下是来源: #include #include struct list { int value; struct list *next; }; typedef struct list ls; void add (ls **head, ls **tail, int val) { ls *new, *tmp1, *tmp2; if (NULL == *head) { new = (ls*)malloc(sizeof(ls)); *head = new; *tail = new; new->value = val; new->next = NULL; return; } else { tmp1 = […]

无法从C中的文件中读取字符串并将其作为lc3解析器进行操作

我想创建一个程序,扫描文件的内容: 1283 5105 lc3中两条指令的hex代码: 添加r1,r2,r3 和r0,r4,r5 我希望我的程序读取此文件并在屏幕上打印两个相应的说明,有人可以告诉我它有什么问题 #include #include #include int main(int argc, char *argv[]) { FILE *file; char hexString[5]; int dr, sr1, sr2, instruction; file = fopen(argv[1], “r”); while (fscanf(file, “%d”, hexString) != EOF){ unsigned short int instruction = (unsigned short)strtol(hexString, NULL, 16); if (instruction >> 12 == 0b0001){ //op code is ADD dr […]

14位左对齐的二进制补码

我有两个字节包含一个14位左对齐的二进制补码值,我需要将它转换为有符号的短值(范围从-8192到+8191,我猜?) 最快的方法是什么?

ARM cortex-M3 uint_fast32_t vs uint32_t

我正在为STM32Fx cortex-M3系列处理器开发一个程序。 在stdint.h中定义了以下内容: typedef unsigned int uint_fast32_t; typedef uint32_t uint_least32_t; typedef unsigned long uint32_t; 据我了解。 [u]int_fast[n]_t will give you the fastest data type of at least n bits. [u]int_least[n]_t will give you the smallest data type of at least n bits. [u]int[n]_t will give you the data type of exactly n bits. 据我所知sizeof(unsigned int)<= sizeof(unsigned […]

C中的运算符sizeof()

考虑该计划 main() { printf(“%d %d %d”,sizeof(‘3’),sizeof(“3”),sizeof(3)); } gcc编译器的输出是: 4 2 4 为什么会这样?

C中的自定义数据类型

我正在使用加密技术,需要使用一些非常大的数字。 我也在使用新的Intel无指令乘法指令,它需要m128i数据类型,这是通过加载一个以浮点数据作为参数的函数来完成的。 我需要存储2 ^ 1223整数,然后将其平方并存储该值。 我知道我可以使用GMP库,但我认为创建两种数据类型(包括2 ^ 1224和2 ^ 2448等值)会更快。 它将有更少的开销。我将使用karatsuba乘以数字,所以我需要对数据类型执行的唯一操作是添加,因为我将打破数字以适应m128i。 有人可以指导我朝着可以帮助我创建我需要的整数大小的材料的方向。

如何明智地解释这个编译器警告?

当我执行这个问题的代码时,我得到了这个警告: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=] printf(“PQ: %d, P: %d, Q: %d”, (p – q), p, q); ~^ ~~~~~~~ %ld 作为reflection修复,我使用%ld来打印两个指针的减法。 编制者同意了。 幸运的是,我看到另一位用户提到应该使用%td的评论,因为减法的结果类型是ptrdiff_t 。 这个答案证实了这一说法。 现在从GCC的stddef.h头文件中,我可以看到这些类型在这种情况下是等价的: typedef __PTRDIFF_TYPE__ ptrdiff_t; #define __PTRDIFF_TYPE__ long int 但是,我只是建议对OP的错误(或多或少)修复,使用%ld而不是%td 。 有没有办法让我理解单独的编译器警告是不够的? 或者也许明智地解释警告本身,而不仅仅是反应。