Tag: int

如何用环绕或溢出减去两个无符号整数

有两个无符号整数(x和y)需要减去。 x总是大于y。 但是,x和y都可以环绕; 例如,如果它们都是字节,则在0xff之后变为0x00。 问题是如果x环绕,而y则没有。 现在x似乎小于y。 幸运的是,x不会缠绕两次(只保证一次)。 假设字节,x已经包装并且现在是0x2,而y没有并且是0xFE。 x – y的正确答案应该是0x4。 也许, ( x > y) ? (xy) : (x+0xff-y); 但我认为还有另一种方式,涉及2s赞美?在这个嵌入式系统中,x和y是最大的unsigned int类型,因此添加0xff …是不可能的 编写语句的最佳方法是什么(目标语言是C)?

如何在C中将128位整数转换为十进制ascii字符串?

我正在尝试将存储为4个无符号整数的数组的128位无符号整数转换为C中的十进制字符串表示forms: unsigned int src[] = { 0x12345678, 0x90abcdef, 0xfedcba90, 0x8765421 }; printf(“%s”, some_func(src)); // gives “53072739890371098123344” (上面的输入和输出示例完全是虚构的;我不知道输入会产生什么。) 如果我要使用hex,二进制或八进制,这将是一个简单的掩码和位移到剥离最不重要的字符。 但是,在我看来,我需要做基数为10的分裂。 不幸的是,我不记得如何跨多个int执行此操作,并且我使用的系统不支持大于32位的数据类型,因此使用128位类型是不可能的。 使用不同的语言也是不对的,我宁愿为这一项操作避开一个大数字库。

将整数解析为字符串C.

如何在C中解析整数到string(char* || char[]) ? 是否有与C中的Java的Integer.parseInt(String)方法等效的方法?

signed和unsigned int之间的强制转换是否在内存中保持变量的精确位模式?

我想通过套接字传递一个32位有符号整数x 。 为了让接收器知道期望哪个字节顺序,我在发送之前调用htonl(x) 。 虽然htonl需要一个uint32_t但我想确定当我将int32_t转换为uint32_t时会发生什么。 int32_t x = something; uint32_t u = (uint32_t) x; 总是这样的情况, x和u中的字节将完全相同吗? 怎么回事: uint32_t u = something; int32_t x = (int32_t) u; 我意识到负值会转换为大的无符号值,但这并不重要,因为我只是回到了另一端。 但是如果使用实际字节进行混乱,那么我无法确定返回将返回相同的值。

很长的 Int C / C ++ – 重点是什么?

正如我最近所了解的那样,C / C ++中的长度与int的长度相同。 简单地说,为什么? 甚至在语言中包含数据类型似乎也毫无意义。 它没有特定于int的特定用途吗? 我知道我们可以像这样声明一个64位的int: long long x = 0; 但是为什么语言选择这样做,而不仅仅是做得好……比int更长? 其他语言如C#这样做,为什么不用C / C ++呢?

将整数转换为字符串而无需访问库

我最近阅读了一份面试问题样本: 编写一个函数将整数转换为字符串。 假设您无权访问库函数,即itoa()等… 你会怎么做?

uint32_t vs int作为日常编程的约定

什么时候应该使用stdint.h中的数据类型? 总是使用它们作为惯例是正确的吗? 设计非特定尺寸类型(如int和short)的目的是什么?

定义整数(int); 什么是默认值?

int i; int data[5] = {0}; data[0] = i; 数据[0]的价值是多少? 另外,这条线的含义是什么? if (!data[0]) { … }

将int转换为float

int total=0, number=0; float percentage=0.0; percentage=(number/total)*100; printf(“%.2f”,percentage); 如果数字的值是50并且总数是100,那么我应该得到50.00的百分比,至少这是我想要的。 但我一直得到0.00作为答案,并尝试了很多类型的变化,但无济于事。

为什么int的范围是-32768到32767?

为什么任何数据类型的范围在负面都比正面更大? 例如,在整数的情况下: 在Turbo C中,它的范围是-32768到32767而对于Visual Studio,它是-2147483648到2147483647 。 其他数据类型也是如此…… [UPD:为Visual Studio设置适当的限制值]