Tag: 整数

数组K&R 1.6字符?

在第23页的K&R第二版中,有一些代码 if (c >= ‘0’ && c <= '9') ++ndigit[c-'0']; 它继续。 我的问题是,为什么整数都有’在每一边? 什么是c-‘0’?

在C中通过命令行传递整数?

我想知道是否有人可以解释如何通过命令行传递参数? 我真的很困惑它是如何工作的。 现在我正试图将一个整数传递给主程序。 我该怎么做呢? 编辑:继续获取初始化从指针生成整数而没有强制转换[-Wint-conversion]错误? #include #define PI 3.1416 int main (int argc, char *argv[]) { double r,area, circ; char a = argv[1]; int num = a – ‘0’; printf(“You have entered %d”,num); r= num/2; area = PI * r * r; circ= 2 * PI * r; printf (“A circle with a diameter of […]

C – 当时读取一个int

我有这个输入: 输入:2015年 我想像这样扫描他: scanf(“%1d”, &arr); 但这绝对是错误的。 我能做什么? 我希望通过整数接收输入整数,如’2’,’0’,’1’,’5’,而不是像“2015”。

在具有两种体系结构的嵌入式系统中使用的整数和布尔类型

我正在为嵌入式系统编写一些软件,主要是在C语言中。它恰好是双核TI平台,我使用的是一些供应商和其他库。 处理器有一个32位的ARM内核,可以进行字节访问( sizeof(char) == 1和sizeof(int) == 4 :8和32位)和一个C28内核,它是一个32位CPU sizeof(char) == sizeof(int) == 1 :两者都是16位( 是的,真的 )。 我打算避免使用像int和char这样的类型来支持我总是明确我在做什么。 无论如何我会计划这个,但是当“char”有点叛逆并且不总是8位时我会加倍。 但是,我有很多整数和布尔值定义(和浮点数,但我们不用担心它们)可供我使用,具体取决于我包含的确切数量和数量: 在ARM方面: // from the ARM compiler’s include dir typedef signed char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef long long int64_t; typedef unsigned […]

套接字中的网络字节顺序

我正在学习c(Linux)中的套接字编程,我无法理解为什么在发送整数时需要使用htonl,而不是在发送字符串(char *)时。 我读过很多论文,但我仍然不知道为什么。

找到两个整数,使他们的产品接近给定的真实

我正在寻找一种算法来找到两个整数值x,y ,使得它们的乘积尽可能接近给定的双k而它们的差值很小。 示例 :矩形区域为k=21.5 ,我想找到该矩形的边长,其约束条件必须是整数,在这种情况下,一些可能的解是(排除排列) (x=4,y=5) , (x=3,y=7)和愚蠢的解(x=21,y=1) 事实上,对于(3,7)夫妻,我们与(21,1)夫妻的差异相同 21.5-3*7=0.5 = 21.5-21*1 而对于(4,5)情侣21.5-4*5=1.5 但这对夫妇(4,5)更可取,因为他们的差异是1 ,所以矩形是“更加平方”。 有没有一种方法来提取差异最小的x,y值,它们的乘积与k的差异也是最小的?

赋值使得指针来自int w / out of cast

我正在为一个记忆斐波那契数字的程序编译一些代码。 该程序工作正常但是当我在linux环境中编译时,我在编译之前得到了这个警告。 line 61: warning: assignment makes pointer from integer without a cast [enabled by default] 以下是此警告来自的代码片段,我将尝试展示最相关的内容,以便了解最佳情况 int InitializeFunction(intStruct *p, int n) p->digits = (int)malloc(sizeof(int) * 1); if(p->digits == NULL) handleError(“Got error”); //making the one index in p->digits equal to n p->digits[0] = n; //incrementing a field of ‘p’ p->length++; //return 1 if successful return […]

使用execve时传递整数参数

我是使用C语言系统调用编程的初学者。我试图在我的一个程序中使用execve调用。 我必须将一个整数作为参数传递给通过execve调用的程序。 但是,在互联网上阅读并查看示例代码,我可以看到我们只能将字符串作为参数传递。 所以,我尝试使用’sprintf’将整数转换为字符串,然后使用’strcpy’将该字符串复制到必须通过execve传递的字符串数组的一个元素中。 但是使用strcpy会导致分段错误。 我通过调试检查了这一点,如果我不使用strcpy但只是写一些像 – myargv [1] =“123”; 然后整个程序工作正常。 但由于我必须传递一个变量整数作为参数而不是常量,我不能使用上面的方法。 这个问题一直困扰着我。 请帮助我解决我应该做的事情。

如何将0到25之间的整数转换为相应的ASCII字符?

假设我有一个与ASCII字符a对应的数字0 。 我如何将0到25范围内的数字转换为字母表中的字母? 我已经尝试将97添加到十进制值,但它只输出数字+ 97 。 typedef enum { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z } set; void dispSet(set numbers[], int size_numbers) { int i; printf(“[ “); for (i = 0; i < size_numbers-1; i++) […]

编译器在转换整数常量时有什么作用?

使用以下宏: #define MIN_SWORD (signed int) 0x8000 例如,以下表达式: signed long s32; if (s32 < (signed long)MIN_SWORD)… 预计会做以下检查: if (s32 < -32768) 一些编译器似乎工作正常。 但在其他一些编译器上,exprssion被评估为: if (s32 < 32768) 我的问题:ANSI-C编译器如何评估以下表达式:( (signed long) (signed int) 0x8000 ? 似乎在某些编译器上,转换为`(signed int)不会导致(预期)从正常数0x8000转换为有符号整数的最小负值,如果之后表达式被转换为更宽泛的有符号长整型。 换句话说,评估的常量不等于:-32768L(但32768L) 这种行为可能是ANSI-C未定义的吗?