c - 如何在 if 语句中检查函数返回值而不调用它
问题描述
我试图在 if 语句中检查函数的返回值,以便如果它为 1,我将返回它的值,但是当我在 if 语句中执行此操作时,它会被调用。有没有办法阻止 if 语句中的调用。我想检查所有三个函数,但如果我在没有 if 语句的情况下检查了一个,那么它返回 0 并停止。
if (argc != 2)
{
printf("Usage: ./substitution key\n");
return 1;
}
else
{
string chars = argv[1];
if (check_length(chars) == 1)
{
return check_length(chars);
}
else if (check_rc(chars) == 1)
{
return check_rc(chars);
}
else if (check_alpha(chars) == 1)
{
return check_alpha(chars);
}
}
string ptext;
ptext = get_string("Input Text: \n");
}
int check_rc(string chars)
{
for (int i = 0, n = strlen(chars); i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (!(i == j))
{
if (chars[i] == chars[j])
{
printf("Key must not contain repeated characters. \n");
return 1;
}
}
}
}
return 0;
}
int check_alpha(string chars)
{
for (int i = 0, n = strlen(chars); i < n; i++)
{
if (isdigit(chars[i]))
{
printf("Key must only contain alphabetic characters. \n");
return 1;
}
}
return 0;
}
int check_length(string chars)
{
int charLength = strlen(chars);
if( charLength !=26)
{
printf("Key must contain 26 characters.\n");
return 1;
}
return 0;
}
解决方案
您的问题很难理解,但我假设如果您想减少不必要的检查量,您可以应用 && 的短路评估概念
或者你不能使用(否则)。并改用 3 if 语句。
如果之前的 if 语句之一为真,则所有后续(else if)都将跳过。
希望这有帮助。
推荐阅读
- angularjs - 通过 grunt webpack 运行的 Webpack 不会出错或完成,或做任何事情
- dart - Flutter中如何实现动态widget路由?
- tensorflow - 为特定的 GPU 架构构建 TensorFlow
- python - 需要重塑我的数据框(很多列名)
- scala - 是否有内置 Spark 可以扁平化嵌套数组?
- google-apps-script - 在 Google Apps 脚本操作处理程序中,如何获取选择输入的值?
- c# - IronPython.Runtime.UnboundNameException:未定义名称“str”
- python-3.x - 如何正确拆分数据行-ValueError:解包的值太多
- wordpress - Wordpress add_menu_page() - 不显示内容
- laravel - 在同一模型中使用多对多关系的正确方法是什么