Q:

Conditions in an if statement

I'm looking through this article (https://spin.atomicobject.com/2012/06/18/solving-sudoku-in-c-with-recursive-backtracking/) explaining a backtracking approach to solve a sudoku puzzle in C and I had a couple of questions about conditions in if statements. 
He uses if(puzzle[row][column]), I am unsure as to what it is checking. If a number exists in that position it will continue? For this I would have thought to use != null to check that it's not empty
He also uses a function call inside an if statement: if(isValid(nextNum, puzzle, row, column) Does this mean if the function is successful it executes what's inside the if?  

A:

Because, in C int expressions can be used in place of boolean expressions with 0 being false and anything else being true, if(puzzle[row][column]) is an idiomatic way of writing 
if(puzzle[row][column] != 0)

I prefer the latter because the former does seem to confuse people not familiar with the idiom.

If a number exists in that position it will continue? For this I would have thought to use != null

The values in a cell are number - ints in fact. He uses zero as a convention for "not filled in yet". If the values in the array were pointers, I would agree, with if(puzzle[row][column] != NULL) but they aren't pointers.

