C 用于指示发生错误的公共字符

C 用于指示发生错误的公共字符,c,char,C,Char,通常在返回整数的函数中,-1用于向用户/程序员指示程序中发生了错误。e、 g.如果在字符串中找不到单词,程序可能会返回-1,而不是字符串中单词起始位置的索引 所以我的问题是,对于返回字符的函数,应该返回什么? 换句话说,是否有一个大多数程序员使用的共同字符,如-1来检测何时发生错误 当然,这可能是主观的,因此假设您创建了一个程序,将数字转换为相应的字符: char digitToCh (int digit) { if ( digit < 0 ) // If digit is n

通常在返回整数的函数中,
-1
用于向用户/程序员指示程序中发生了错误。e、 g.如果在字符串中找不到单词,程序可能会返回
-1
,而不是字符串中单词起始位置的索引

所以我的问题是,对于返回字符的函数,应该返回什么? 换句话说,是否有一个大多数程序员使用的共同字符,如
-1
来检测何时发生错误


当然,这可能是主观的,因此假设您创建了一个程序,将数字转换为相应的字符:

char digitToCh (int digit)
{

    if ( digit < 0 ) // If digit is negative, return ?
        return '?';

    int n = intLen (digit);

    if ( n > 1 )
        digit /= power (10, n - 1);

    return (char) (((int) '0') + digit);
}
char-digitToCh(整数位)
{
if(digit<0)//如果digit为负数,返回?
返回“?”;
int n=整数(数字);
如果(n>1)
数字/=功率(10,n-1);
返回字符(((int)'0')+数字);
}

如果数字是负数,那么什么错误字符代码才是合适的。这个例子很随意,但我只是想让它更容易表达。

让函数返回一个
int
而不是
char
,并使用
-1
指示错误

例如,通过这种方式可以实现。
.

不,没有这样的保留字符。事实上,正是由于缺少这种公共字符,导致面向字符的I/O函数将其返回类型更改为
int

当必须保留字符返回值的完整范围时,返回
int
的技巧非常重要。但是,在您的情况下,只有十位字符是有效的,因此返回字符零
'\0'
是一个有效的选项:

char digitToCh (int digit) {
    if (digit < 0) return '\0';
    ...
}

因此,基本上返回ASCII码并将其转换为字符,否则?@user2849447
char
是8位整数,这就是为什么实际上除了函数的返回值和为错误情况添加
-1
的返回值之外,您根本不需要更改代码的原因。谢谢,但是,如果我想使用
0
,这难道不会引起混淆吗,因为
\0
将等同于它吗?但是
\0
不同于
'0'
,因为后者是
48
@user2849447如果我理解代码背后的意图,唯一有效的返回是字符
'0'
'9'
,代码从48到58<代码>'\0'的代码为零,因此在这种情况下可以将其用作特殊值。@好吧,我只是想澄清一下,
\0
将不打印任何内容,而
0
将正常打印?@user2849447 zero本身(即
0
)令人困惑。C有三个零-常规零
0
,字符零
'\0'
(注意单引号和斜杠)和数字零
'0'
(注意单引号)。前两者在大多数情况下是相同的。第三个不同-它是数字48的另一种表示形式。请注意:要获取数字最左边的数字,您可以使用
而(digit>9)digit/=10
这可以避免您确定整数长度和幂计算。@Mario谢谢,我不知道为什么我没有想到这一点。哦,还有一个(为了可读性):您不必将字符
'0'
强制转换为
int
。已经存在隐式转换(由于添加了
int
)。只需将强制转换保持为
char
,以避免编译器警告可能的截断。
char nextDigit = digitToCh(someInt);
if (!nextDigit) {
    // The next digit is invalid
}