【发布时间】:2013-08-31 18:32:35
【问题描述】:
不知道下面的代码会不会一直编译,这样就不会出现非法的NULL ptr解引用?
我担心的是编译器可能会在首先检查“b”是否为 NULL 之前检查 b->value。
typedef struct
{
int value;
} mystruct;
int func(mystruct * b)
{
if((NULL == b) || (b->value == 0))
{
return -1;
}
printf("value: %d\n", b->value);
}
【问题讨论】:
-
What is the order of evaluation of statements in a if bracket if(...)? 的可能副本。简短的回答,
||从左到右评估并且会短路,详细信息在列出的 dup 中。应该更加小心,这是一个C问题,这是一个better dup
标签: c