我试图记住,如果使用标准 c 编译器(C89),下面的两个 if 语句将以相同的方式进行评估。
片段1:
boolean function(formattype* format)
{
if(format != null && (*format == format1 || *format == format2 || *format == format3) )
return true;
else
return false;
}
将以与片段 2 相同的方式评估:
boolean function(formattype* format)
{
if(format != null && (*format == format1 || format2 || format3) )
return true;
else
return false;
}
我只对第二次比较的评估感兴趣,我只是为了说明目的添加了这个函数。我似乎记得使用一些类似的方法来评估 == 使用每个 || 的参数,而不是全部输入,但不记得细节。
编辑:也许该功能使事情变得比它帮助说明的更加混乱。
我正在尝试评估以下内容
if(format != null && (*format == format1 || *format == format2 || *format == format3) )
第一个只是检查以防止取消引用空指针,因此请忽略它。后三个查看取消引用的格式指针是否等于三种不同格式类型中的任何一种(如果您必须知道,它们位于枚举中)。
我不想使用宏,我想简化比较。这可能是不可能的,我只是对执行类似操作有一个模糊的记忆。
我认为这与第二个示例类似。
if(format != null && (*format == format1 || format2 || format3) )