如何在C中将int转换为short int?

问题描述

假设我有一个 char array[5] = {'1','2','3','4','\0'};

如果我想要整数,我可以简单地使用 atoi() 函数:
int num = atoi(array);

如何将值检索为 short/short int?

当然,前提是该值适合简短。

我是否需要调用 atoi() 并通过位移位来解决? 不过,我对此不太熟悉。

解决方法

短函数没有ascii,https://en.cppreference.com/w/c/string/byte/atoi只列出atoi for ascii to intatol for ascii to long和{{1} } 将 ascii 转换为 atoll

但是您可以使用 long long 转换为 atoi,然后直接转换为 int。当然,这不会检查数字是否在 short 的范围内。您可能需要使用 short 之类的东西自行检查。

SHRT_MIN <= i && i <= SHRT_MAX

或者直接转换:

int num = atoi(array);
short s = (short)num;

正如其他人建议您不需要显式转换,但它可能有助于更好地了解这里发生了什么。

short s = (short)atoi(array);
,

比简单转换更安全的版本。

<!-- -->

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...