gpt4 book ai didi

c++ - 在同一 if 语句中检查 nullptr 和有效索引

转载 作者:搜寻专家 更新时间:2023-10-30 23:54:54 25 4
gpt4 key购买 nike

这是我正在处理的代码的过度简化版本。我想检查一个索引是否在有效范围内,以及在给定索引处的数组中是否有一个 if 语句中的对象。

int main(){
int* anArray[5]; // in the code there's either an object here or a nullptr
int anIndex = 2; // something that I get from the depths of my code

// int* <- typename not allowed
// elem <- indentifier is undefined
if(anIndex < 5 && int* elem = anArray[anIndex]){
// use elem here
}
return 0;
}

我可以使用两个 if 语句来检查索引,然后检查对象,但过了一段时间后到处都是 if 语句,我想避免这种情况。我做错了什么?

编辑:问题不在于索引,问题是如果我检查某些东西然后我想得到一个指针我得到上面提到的if语句的错误

最佳答案

使用 Conditional (or Ternary) Operator ()。在运算符的条件表达式中评估索引是否在 bouds 中。如果表达式的计算结果为 true,则您可以直接访问数组。 false 情况的表达式是 nullptr:

int* anArray[5];
int anIndex = 2;

if ( int* elem = anIndex >= 0 && anIndex < 5 ? anArray[anIndex] : nullptr ){
// use elem here
}

关于c++ - 在同一 if 语句中检查 nullptr 和有效索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663302/

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