Tag: int

C99的固定宽度整数类型

在这里没有得到我的问题的详细答案。 我想我会从另一个角度解决它。 有人能够解释用于确定C99固定宽度整数类型的基础类型的选择标准: [u]int_fast[n]_t [u]int_least[n]_t [u]int[n]_t 对于给定的处理器,如果’long’和’int’的大小相同(sizeof(int)== sizeof(long)),那么为什么’long’会在’int’上使用,反之亦然。

将整数值存储在C中的字符数组中

这是一个非常微不足道的问题,但我不知道为什么我没有得到正确的输出。 这是我想要做的: char sendBuffer[1000]; int count=0: while(count<10) { sendBuffer[0]=count; sendBuffer[1]='a'; sendBuffer[2]='b'; sendBuffer[3]='c'; sendBuffer[4]='\0'; printf(%s,sendBuffer); count=count+1; } 在输出中,除第一个索引外,所有缓冲区都正确打印。 我希望在缓冲区的开头打印1,2,3等等,但它不起作用。 请帮忙

在C中签名vs unsigned int

我是C初学者,需要快速澄清有关整数。 当你将某个东西作为一个32位的int转换时,一半的位被分配给负整数。 因此,如果您知道您将始终具有正整数,则将某些内容作为无符号整数推送应该最大化您的正位,因此当您知道输出将始终为正时更有意义。 这是真的? 谢谢!

C中的无符号溢出

考虑以下C代码: #include uint32_t inc(uint16_t x) { return x+1; } 当使用gcc-4.4.3在纯x86_64系统上使用标志-std = c99 -march = core2 -msse4.1 -O2 -pipe -Wall进行编译时,它会生成 movzwl %di,%eax inc %eax retq 现在,在C中预测无符号溢出。我不太了解x86_64汇编,但据我所知,16位参数寄存器被移动到32位寄存器,该寄存器递增并返回。 我的问题是,如果x == UINT16_MAX怎么办。 会发生溢出,标准规定x + 1 == 0,对吗? 但是,如果%eax是一个32位寄存器,它现在包含UINT16_MAX + 1,这是不正确的。 这让我在这里连接一个问题:是否有一种可移植的方法来禁用C中的无符号溢出,这样编译器就可以假设存储在大寄存器中的小变量的高位始终为0(所以它不需要清除它们)? 如果不是(或者如果解决方案在语法上是令人讨厌的),至少在GCC中有没有办法做到这一点? 非常感谢您的宝贵时间。

const int不占用空间?

在对Anonymous enum用法的 回答中 , Oli Charlesworth指出: const int是不可变的,并且可能不会占用任何空间,具体取决于编译器选择的操作。 如果我声明const int i = 10 ,如果它“可能不占用任何空间”,那么该10如何存储? 假设int是4个字节,我假设保留至少4个字节来存储10作为const int 。

将int转换为C中的short

我有: int a = 2147483647; short b = (short)a; 我得到b = -1而我希望int32转换为int16 ( short )。 我希望看到一些价值而不是 -1 。 请有人帮帮我。

为什么ENOUGH就足够了? (将int存储在char数组中)

在关于如何在C中将int转换为字符串 的答案之一 (及其注释)中给出了以下解决方案 char str[ENOUGH]; sprintf(str, “%d”, 42); 在评论中, ENOUGH提到ENOUGH可以在编译时确定: #define ENOUGH ((CHAR_BIT * sizeof(int) – 1) / 3 + 2) 我得到+ 2因为你需要能够显示减号和空终止符但是其他部分背后的逻辑是什么? 特别是CHAR_BIT ?

C中整数的大小

可能重复: int的大小是否取决于编译器和/或处理器? Integer的大小是依赖于编译器还是依赖于OS或处理器? 如果我在32位机器或64位机器上运行的32位操作系统或64位操作系统上使用gcc怎么办(在这种情况下只有64位操作系统)。

将变量转换为int vs round()函数

我已经在几个地方看到过它,其中(int)someValue是不准确的,而是调用round()函数的问题。 两者有什么区别? 具体来说,如果需要,对于C99 C.我在java中编写时也看到了同样的问题。

为什么int的范围是-1?

我读到int的范围取决于一个字节。 因此将int设为4个字节长,即4 * 8位= 32位。 所以范围应该是:2 ^(32-1)= 2 ^(31) 为什么有些人说它的^ ^ 31 – 1虽然? 谢谢!