如何转换成短int在C?



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

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

如何检索值为短/短int?

当然,这是给定的值适合在短。

我需要调用atoi()并使用位移来解决它吗?不过我不太熟悉。

没有ascii到短的功能,https://en.cppreference.com/w/c/string/byte/atoi只列出了atoi的ascii到int,atol的ascii到longatoll的ascii到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);

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

short s = atoi(array);  // Implicit cast

一个比简单强制转换更安全的版本。

#include <stdlib.h>
#include <limits.h>
short getshort(const char *num, int *errcode) 
{    
int result = atoi(num);
if(errcode)
{
*errcode = 0;
if(result > SHRT_MAX) *errcode = 1;
else if(result < SHRT_MIN) *errcode = -1;
}
return result;
}

最新更新