假设我有这段代码

if ((p = malloc(int)) == null) { do something }

else { do something else with p }

我知道语法可能不正确,但是,如果说,如果if语句中的条件不正确且不等于null,并且我们继续进行else语句,那么如果我尝试使用p,仍将malloc(int)分配为p else语句中的malloc(int)?还是必须在else语句中再次将p分配给ojit_code?

最佳答案

逻辑如下

if ((p = malloc(sizeof(int))) == NULL)
{
    // Here p is equal to NULL
    // skip the else statement
} else {
    // Jump here if the allocation was successful and p is not equal to NULL
}

因此,如果您将正确使用括号,则首先分配
p = malloc(sizeof(int))

在检查条件之前进行评估。

关于c - 在if语句中,如果我给变量赋值,是否必须在else语句中再次做?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40943542/

10-15 00:23