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

How to convert int to short int in C?

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

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

如何检索 short/short int 的值?

当然是给short的值了

我是否需要调用 atoi() 并通过位移来计算? 不过我不太熟悉。

没有ascii to short函数,https://en.cppreference.com/w/c/string/byte/atoi只列出了atoi for ascii to int, atol for ascii to long and atoll 对于 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;
}