如何在 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;
}
假设我有一个 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;
}