gpt4 book ai didi

C++:空 if 语句

转载 作者:太空狗 更新时间:2023-10-29 19:39:33 25 4
gpt4 key购买 nike

这更像是一个入门级问题,但我想知道使用空 if 语句是否是一种好习惯。

考虑这段代码:

void RabbitList::purge()
{
if(head == NULL)
{
//cout << "Can't purge an empty colony!" << endl;
}
else
{
//Kill half the colony
for(int amountToKill = (getColonySize()) / 2; amountToKill != 0;)
{
RabbitNode * curr = head;
RabbitNode * trail = NULL;

bool fiftyFiftyChance = randomGeneration(2);

//If the random check succeeded but we're still on the head node
if(fiftyFiftyChance == 1 && curr == head)
{
head = curr->next;
delete curr;
--size;
--amountToKill;
}
//If the random check succeeded and we're beyond the head, but not on last node
else if(fiftyFiftyChance == 1 && curr->next != NULL)
{
trail->next = curr->next;
delete curr;
--size;
--amountToKill;
}
//If the random check succeeded, but we're on the last node
else if(fiftyFiftyChance == 1)
{
trail->next = NULL;
delete curr;
--size;
--amountToKill;
}
//If the random check failed
else
{
trail = curr;
curr = curr->next;
}
}
cout << "Food shortage! Colony has been purged by half." << endl;
}
}

如您所见,第 5 行的 if 语句目前已被注释掉;这更像是调试文本,我不想再向控制台发送任何反馈。我很确定让 if 语句什么都不做会被认为是不好的做法。我知道我可以回来;

但是由于我的返回类型是 void,所以它给了我一个错误。例如,如果我的返回类型不是 void 怎么办?

最佳答案

即使您的返回类型为 void,在那里 return 也是合法的,当然因为 if 有大括号,至少这不是等待发生的错误。然而,它并不漂亮,需要更多的阅读/理解工作。

你可以改写

if(head == NULL) // or if(!head)
return;

....

这应该消除了对 else 的需要,其余代码现在位于函数内部而不是嵌套范围内,这是一个令人高兴的振作。

关于C++:空 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270110/

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