MST
星途 面试题库

面试题:C++中不同平台下基本数据类型位数及相关转换

在32位和64位系统中,C++ 的 `int`、`long`、`long long` 数据类型的位数分别是多少?假设你有一个 `short` 类型的变量,如何在不丢失数据的前提下将其转换为 `int` 类型,并说明可能出现数据丢失的情况。
50.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

1. 不同系统下数据类型位数

数据类型32 位系统64 位系统
int32 位32 位
long32 位64 位
long long64 位64 位

2. short 转换为 int 且不丢失数据

在 C++ 中,short 类型通常是 16 位,int 类型在 32 位和 64 位系统中通常是 32 位。由于 int 的表示范围大于 short,所以可以直接进行隐式转换,一般不会丢失数据。例如:

short s = 100;
int i = s; // 隐式转换,通常不会丢失数据

3. 可能出现数据丢失的情况

如果 short 变量的值超出了 int 类型的表示范围,就会出现数据丢失。例如,short 的最大值为 32767,如果 short 变量的值超过这个数,转换为 int 时,结果会截断,导致数据丢失。比如:

short largeShort = 32768;
int newInt = largeShort; 
// newInt 的值为 -32768,因为 32768 超出了 short 的表示范围,发生了溢出,数据丢失