C 用于IF-Statments和while-loops的短路
C++ Short-Circuit for IF-Statments and While-Loops
我问自己是否可以在C 和C中使用以下if-condition:
uvc_frame_t *frame = ...; //receive a new frame
if(frame != NULL && frame->data != NULL) cout << "Data read";
else cout << "Either frame was NULL or no data was read!";
我不确定这个语句是否会丢掉分段错误,因为如果frame
是NULL
,那么您无法检查frame->data
!
,
while
环条件是否相同?while(frame == NULL && frame->data == NULL) { //.. receive frame }
,
||
操作员是否相同?- 以及如何强制评估if statement中的所有值(即使我检查3个变量(
这是frame
的基础结构:
typedef struct uvc_frame {
void *data;
size_t data_bytes;
uint32_t width;
uint32_t height;
enum uvc_frame_format frame_format;
size_t step;
uint32_t sequence;
struct timeval capture_time;
uvc_device_handle_t *source;
uint8_t library_owns_data;
} uvc_frame_t;
我不确定这个语句是否会抛出分段故障
它不会出现故障。实际上,这是短路逻辑运算符的典型应用。
,在循环条件时是否相同?
是。
短路评估不是IF条件或条件的属性。它是表达本身的属性。即使没有用作条件,它仍然是短路。
例如,这仍然是短路的:
bool x = frame != NULL && frame->data != NULL;
,对于||也一样操作员?
是的。它也是短路。
好吧,不完全是。或关系在第一部分为真时将其短路。这与和。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如何在自定义类中启用'auto loops'?
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 为什么在 while 循环中返回表达式不起作用
- 需要帮助定义循环控制变量(while loops)C++
- C 用于IF-Statments和while-loops的短路
- Xcode 调试不显示 for- 或 while-loops