if语句中的条件

问题描述 投票:0回答:2

我正在浏览这篇文章(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中的内容吗?

c if-statement condition
2个回答
3
投票

因为,在C int中,可以使用表达式来代替布尔表达式,其中0为假,其他任何都是真的,if(puzzle[row][column])是一种惯用的写作方式

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

我更喜欢后者,因为前者似乎混淆了那些不熟悉成语的人。

如果该位置存在一个数字,它会继续吗?为此,我原本想用!= null

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


0
投票

在C条件中,0为假,任何非零都为真。 puzzleint的二维阵列。如果int为0,则条件求值为false。如果int不为零,则条件求值为真。

© www.soinside.com 2019 - 2024. All rights reserved.