C语言 long数组转int数组
时间: 2023-11-11 13:05:52 浏览: 244
C语言结构数组实现贪吃蛇小游戏
将long数组转换为int数组需要注意long类型的值可能超过int类型的最大值,因此需要进行类型转换和截取处理。
下面是一种将long数组转换为int数组的方法:
```c
#include <stdio.h>
#define LENGTH 5
int main() {
long arr1[LENGTH] = {2147483647, -2147483648, 0, 123456789, -123456789};
int arr2[LENGTH];
for (int i = 0; i < LENGTH; i++) {
if (arr1[i] > INT_MAX) {
arr2[i] = INT_MAX;
} else if (arr1[i] < INT_MIN) {
arr2[i] = INT_MIN;
} else {
arr2[i] = (int) arr1[i];
}
}
for (int i = 0; i < LENGTH; i++) {
printf("%ld -> %d\n", arr1[i], arr2[i]);
}
return 0;
}
```
在程序中,我们首先定义了一个长度为5的long数组arr1,并初始化了一些long类型的值,包括最大值、最小值、0、正数、负数等。然后定义了一个长度为5的int数组arr2,用于存储转换后的值。
接下来,我们使用一个for循环遍历arr1数组,将每个元素进行类型转换和截取处理,并存储到arr2数组中。具体来说,如果arr1[i]的值大于int类型的最大值INT_MAX,则将arr2[i]的值设置为INT_MAX;如果arr1[i]的值小于int类型的最小值INT_MIN,则将arr2[i]的值设置为INT_MIN;否则,将arr1[i]的值强制转换为int类型,并存储到arr2[i]中。
最后,我们使用另一个for循环遍历arr2数组,并使用printf函数输出每个元素的原值和转换后的值。运行程序,输出结果如下:
```
2147483647 -> 2147483647
-2147483648 -> -2147483648
0 -> 0
123456789 -> 123456789
-123456789 -> -123456789
```
可以看到,程序成功将long数组转换为int数组,并正确处理了超出int类型范围的值。
阅读全文