我正在创建一个主函数来测试名为mchar的C函数的限制。 mchar以char为参数。
int main ()
{
mchar();
mchar('A');
mchar('\n');
mchar('');
mchar(NULL);
}
我正在尝试考虑可能调用该方法出错的所有可能用例。所有这些都能被称为正确吗?是否有我遗失的用例?
答案 0 :(得分:7)
只有256个字符,因此您可以轻松地将它们全部调用:
#include <limits.h>
int main(void)
{
for (int c = CHAR_MIN; c <= CHAR_MAX; ++c) {
mchar(c);
}
return 0;
}
如果您特别想测试“有趣”字符,那么您可以尝试这些字符。
mchar('\''); // Single quote
mchar('"'); // Double quote
mchar('\\'); // Backslash
mchar(' '); // Space
mchar('\t'); // Tab
mchar('\n'); // Line feed
mchar('\r'); // Carriage return
mchar('\0'); // NUL
mchar('\b'); // Backspace
mchar('\f'); // Form feed
mchar('\v'); // Vertical tab
mchar('\a'); // Bell (alert)
答案 1 :(得分:0)
关于你的问题
是否可以正确调用所有这些?
首先
mchar('A');
mchar('\n');
这里'A','\ n'是有效字符。所以这将正常工作
mchar('');
是非法的,会给出编译时错误。例如:对于gcc,显示的错误是空字符常量。
mchar();
也是非法的,因为函数需要char
作为参数,但是你没有传递任何参数。您将收到编译时错误(例如'函数的参数太少')。
mchar(NULL);
将在正常情况下编译(如果你没有设置任何严格的编译器标志设置),但有一个警告。
警告:指向整数转换的不兼容指针传递'void *' 到'char'类型的参数;