Tag: int

比较int与long和其他

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

如何从3位整数中提取单个数字?

这不是一个功课问题,我只是好奇。 如果我有一个计算3位数字的程序,比如123,我怎么才能得到“1”? 我试图在最后打印一条消息,说“(第一个数字)告诉你……和(最后两位数字)告诉你……”但我不确定如何保存或获得那一个数字。 有任何想法吗? 除了使用数组之外,这是一种更简单的方法吗?谢谢。

pow函数和long int导致问题

我试图恭维RSA加密方案。 它是这样的: encrypted data = ((message)^e) % n和decrypted data = ((encrypted data)^d) % n 我试图在c中实现这一点。 这是代码: #include #include #include int main(){ long int num = 3255859; long int encrypt =(int)pow((double) num,3) % 33; printf(“%ld\n”,encrypt); return 0; } 我使用gcc -Werror -g -o encrypt encrypt.c -lm编译了这个 这是我得到的输出= -2 ,这显然是错误的。 当我尝试使用较小数字的代码时,我得到了正确的结果。 例如: 当我设置num = 2 ,我得到的结果是8 我知道我要么输入错误,要么我在某个地方跑出界限。 我确实需要使用此代码来加密像上面代码中的大数字一样的大数字。 […]

将int(32位)转换为char(8位)

我有这些定义: int data = uartBaseAddress[UART_DATA_REGISTER / 4]; // data coming from UART RX port char message[20]; // array of 20 chars 现在当我尝试这样做时: message[0] = (char) data; printf(“%x”, message[0]); 它打印(例如): “ffffff9c” 。 当然我只想要最后8位(“9c”),我不明白如何正确地进行从int到char的转换。 编辑:我的意思是:我必须像这样填充数组: data = 0xFFFFFF9c; message[0] = data & 0xFF; — it has to contain only 9c data = 0xFFFFFFde; message[1] = data & […]

浮点算术的最佳实践

我正在对小数点输入执行加法和减法,精确到小数点后第二位。 我试图通过乘以100将它们转换为整数来提高准确度,但却达到了相反的效果。 请考虑以下代码和输出: double d = 2.01; int a = (int) (d * 100.0); cout << a << endl; 输出是: 200 一劳永逸,关于浮点算术的一些最佳实践是什么? 首先使用上面代码的一些变体将double转换为int ,然后将其转换回来是否可行?

具有不同int类型的操作

我有一个程序,它使用多种不同的int类型。 最常用的是uint64_t和标准int 。 但是我想知道我是否可以安全地在他们之间进行混合操作。 例如,我有一个uint64_t ,我想为它添加一个int并将该值存储为另一个uint64_t 。 做这样的事情安全吗? 在我可以对它进行操作之前,是否必须将int为uint64_t ? 我不能在网上找到关于它的东西。 它可能只是被允许,没有人质疑它或我的谷歌查询是错误的。 无论如何,基本上我的问题是我可以混合并使用不同类型的整数进行操作吗?

如何在C中通过udp socket发送整数数组?

我必须通过udp套接字发送一个int数组。 我是否必须将其转换为字符数组或字节序列? 什么是标准解决方案?

struct中的int字段没有初始化的值是多少?

在代码中:… #define MAXELEMNTS 100 struct book { int number; char name[31]; char author[31]; int year; char publisher[31]; }; struct book bkStruct[MAXELEMENTS]; … 在初始化其他char字段时,默认情况下整数字段(数字和年份)是否初始化为0但不是这两个? 或者他们有神知道什么价值? 根据我的经验,他们确实有值= 0,但我不确定这是一般规则所以我必须确定! 最好的问候,Papo

Typecasting指向浮点指针的指针

我正在尝试做以下事情 int a[8]={1,2,3,4,5,6,7,8}; printf(“%f\n”, *(float *)a); printf(“%f\n”, *((float *)a+1)); printf(“%f\n”, *((float *)a+2)); printf(“%f\n”, *((float *)a+3)); printf(“%f\n”, *((float *)a+4)); printf(“%f\n”, *((float *)a+5)); printf(“%f\n”, *((float *)a+6)); printf(“%f\n”, *((float *)a+7)); 我明白了 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 我试图以这种方式打印元素的原因是因为,我想将指向数组的int指针强制转换为浮点指针并将其作为另一个函数的参数传递给float * 。 看来这不行。 有人可以解释为什么这不起作用? int *ptr; function((float *)ptr); 如果我这样做,该函数不会读取指针正确指向的值..只返回0.0000 。

使用接近`INT_MAX`的`count`值来传递数据

消息传递接口API始终使用int作为count变量的类型。 例如, MPI_Send的原型是: int MPI_Send(const void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); 如果要发送或接收的元素数量增长接近或甚至超过 INT_MAX则这可能是一个问题。 当然,这个问题可以解决,通过以下方式降低count : 将单个呼叫分成多个呼叫 定义(不必要的)聚合MPI_Datatype 无论如何,这两种方法都不是真正的解决方案,特别是如果使用简单的启发式方法实现的话。 因此,我想问的是: 使用标准MPI呼叫处理这类案件是否有更好的习惯用法? 如果没有,是否有人知道围绕MPI构建的一些(可靠的)包装器库来克服这个限制?