if语句中的条件

时间:2019-03-13 18:33:26

标签: c if-statement conditional-statements

我正在浏览这篇文章(https://spin.atomicobject.com/2012/06/18/solving-sudoku-in-c-with-recursive-backtracking/),其中解释了一种用于解决C语言中的数独难题的回溯方法,并且我对if语句中的条件有两个疑问。

他使用了if(puzzle [row] [column]),我不确定它在检查什么。如果该位置存在数字,它将继续吗?为此,我本来想使用!= null来检查它是否为空

他还在if语句中使用了一个函数调用:if(isValid(nextNum,puzzle,row,column)这是否意味着如果函数成功,它将执行if内的内容?

2 个答案:

答案 0 :(得分:3)

因为在C int中可以使用布尔表达式代替布尔表达式,其中0为false,其他为true,if(puzzle[row][column])是惯用的书写方式

if(puzzle[row][column] != 0)

我更喜欢后者,因为前者确实使那些不熟悉该习语的人感到困惑。

  

如果该位置存在数字,它将继续吗?为此,我本以为使用!= null

一个单元格中的值实际上是数字-int。他使用零作为“尚未填写”的约定。如果数组中的值是指针,我会同意if(puzzle[row][column] != NULL),但它们不是指针。

答案 1 :(得分:0)

在C中,条件0为假,非零为真。 puzzleint的二维数组。如果int为0,则条件评估为false。如果int不为零,则条件评估为true。