c语言int和longlong转换
时间: 2024-10-13 20:15:59 浏览: 38
在C语言中,`int` 和 `long long` 类型之间的转换通常取决于数据的大小和系统架构。以下是几种常见的转换情况:
1. **自动隐式转换**:如果将 `int` 的值赋给 `long long`,因为 `long long` 可能比 `int` 大,编译器会自动进行隐式提升,将 `int` 转换成 `long long`。
```c
int i = 5; // 假设i是一个32位整数
long long ll = i; // 这里i会被提升到64位
```
2. **显式转换**:如果你想确保数据不会丢失或者为了明确控制类型,可以使用强制类型转换。
- **将 `long long` 转换为 `int`**:若`long long`值适合存储在`int`中,可以直接转换。
```c
long long ll = 1234567890LL; // LL表示长整型
int int_val = (int)ll;
```
- **将 `int` 转换为 `long long`**:这里需要添加 `(long long)` 或者 `L` 后缀。
```c
int i = 5;
long long ll = (long long)i; // 或 ll = iL;
```
3. **范围限制**:当从 `int` 转换到 `long long` 时,如果 `int` 的最大值超出了 `long long` 的范围,可能会导致结果不可预知,甚至溢出。
阅读全文