C奇怪if语句语法

Too*_*ink -1 c if-statement

我看到了这个if陈述,我不确定它是如何工作的,与什么相比较的是什么?是缺少&&还是||?parens让我感到困惑.

if ((list->func)((list->head)->dataPointer, newOb) < 0) {
Run Code Online (Sandbox Code Playgroud)

use*_*751 5

什么与什么相比?parens让我感到困惑.

if(和之间的部分的结果)与0进行比较,就像在每个if语句中一样.

是否缺少&&或||?

我没有看到任何&&或||

parens让我感到困惑.

是什么(list->func)((list->head)->dataPointer, newOb)(不一定按此顺序):

  • 评估 list->func
  • 评估 (list->head)->dataPointer
  • 调用 list->func传递两个参数(list->head)->dataPointernewOb.

然后将其结果与0进行比较,因为它是if(和之间的结果).