if( assert(p != NULL), p->foo != bar ) 这个写法是对的??

我在看《write solid code》,里面讲到断言时,出现
if( assert(p != NULL), p->foo != bar )这句。
为什么可以在if的条件判断里面,放一个逗号?

是逗号表达式:先执行 assert(p != NULL), 然后判断p->foo != bar。
if(表达式)

逗号表达式,从左至右执行,表达式的值为最后一条语句的值