gpt4 book ai didi

C:有符号整数标记值?

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:01 24 4
gpt4 key购买 nike

我正在编写一个程序,其中我需要将字符数组转换为整数。但是,我不仅需要使用正整数,还需要利用所有整数的全部潜力(当然在 int 类型的能力范围内)(即:正数、负数和 0 ).但是我需要访问一些标记值,非常多最好是 int 类型。我不想让所有东西都 float 只是为了我可以使用一个非整数标记,如果我能避免的话。

为了暂时解决这个问题,我一直在使用以下“技巧”:(其中 token 是数组)

int TokenToInt(char token[])
{
int current=0, value=0;
char isNeg = 'F';

if (token[current] == '-') {
isNeg = 'T';
current++;
}

while (1) {
if (isdigit(token[current]) == 0)
return -1;
else {
value *= 10;
value += token[current]-'0';
}

current++;
}

if (isNeg == 'F') return value;
if (isNeg == 'T') return -1 * (value + 1);
}

所以在程序的其余部分,您使用 -1 进行错误检查,完成后,如果返回值为负,则递增返回值。哪个有效,除非用户输入 -2^15,但最好不要输入 -1,对吗?

但它也很麻烦,而且随机增加蓝色的值有点令人困惑。那么我应该坚持使用这种 ^ 方法还是有其他方法可以完成同样的任务?如果有替代方案,这个替代方案是什么?

最佳答案

如果我正确地指出了这一点,那么您实际上是在说您需要返回一个 int,但您还需要能够检测到错误。有两种常用的方法:将返回值放在通过引用传递的参数中,或者添加另一个方法来设置/获取错误。

首先,它会是这样的

int myfcn(int* result, char[] input) {
// do stuff
...
if( success ) {
*result = ...;
return ERROR_SUCCESS;
} else {
return ERROR;
}
}

第二个看起来像...

void caller() {
int value = TokenToInt(...);
if( getLastError() != ERROR_SUCCESS ) {
// handle the error
}
}

int TokenToInt(...) {
// do stuff
if( error ) {
setLastError(ERROR_WHATEVER);
return result
}
return result;
}

您可以查看 getLastError 函数以获取更多详细信息。

关于C:有符号整数标记值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18274893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com