Tag: 长整数

长整数运算中的歧义?

看看下面这段代码: #include int main(void) { int a; a = 2147483647; printf(“a + 1 = %d \t sizeof (a + 1) = %lu\n”, a + 1, sizeof (a + 1)); printf(“a + 1L = %ld \t sizeof (a + 1L) = %lu\n”, a + 1L, sizeof (a + 1L)); a = -1; printf(“a + 1 = […]

比较int与long和其他

我想知道这样的事情: int a = …; long b = …; if (a < b) doSomethings(); 总是有效(除了未签名) 我只是测试了几个值,但我想确定。 我认为在比较中投了很长时间,其他类型呢?

将任意大数转换为256

我有一些非常大的长度可能高达50位数。 我把它作为字符串输入。 但是,我需要对它执行操作。 所以,我需要将它们转换为适当的基础,比方说256。 这样做的最佳算法是什么?

C中限制性最强的类型是什么意思?

“ C编程语言 ”一书在第8.7节“ 实例 – 存储分配器 ”中讨论了“限制性最强的类型”: 虽然机器各不相同,但对于每台机器都有一个限制性最强的类型:如果限制性最强的类型可以存储在特定地址,则所有其他类型也可以。 在某些机器上,限制最多的类型是double ; 在其他人, int或long就足够了。 在他们的代码中, union header使用long类型对齐。 限制性最强的是什么意思? 它可能是最大的类型(例如, double ),还是有另一种方法?

在GNU / Linux中表示64位整数

我正在使用带有gcc Ubuntu 10.10(64位),我想在我的C ++程序中使用64位整数。 在我的系统上, sizeof(long) , sizeof(long long int)和sizeof(int64_t)的输出都是8字节(64位)。 您建议使用64位整数的哪个限定符( long , long long或int64_t )?

为什么C编译器指定长为32位,长为64位?

在128位数字成为现实之前,长64位并保留很长时间是不是更有意义?

如何使用C将长值(32位)拆分为四个char变量(8位)?

我有一个32位长的变量CurrentPosition,我想分成4位,8位字符。 我怎样才能在C中最有效地做到这一点? 我正在使用8位MCU,8051架构。 unsigned long CurrentPosition = 7654321; unsigned char CP1 = 0; unsigned char CP2 = 0; unsigned char CP3 = 0; unsigned char CP4 = 0; // What do I do next? 我应该用一个指针引用CurrentPosition的起始地址然后再添加8个地址四次? 这是小恩迪安。 我也希望CurrentPosition保持不变。

unsigned long int对此操作是否正确?

这是我的代码: #include int main(int argc, char *argv[]) { unsigned long int x = 0; // trying to make x = 2,147,483,648 x = 1 << 31; printf("%lu", x); } 它返回x = 18446744071562067968。我读到unsigned long int应该达到4,294,967,296,那么为什么我不能用1 << 32来设置x等于2,147,483,648?

strtoull和长期算术

任何人都可以解释这个程序的输出以及我如何解决它? unsigned long long ns = strtoull(“123110724001300”, (char **)NULL, 10); fprintf(stderr, “%llu\n”, ns); // 18446744073490980372

c / c ++中unsigned long / long / int之间有什么区别?

似乎所有这些都占用了4个字节的空间, 那有什么区别?