我是C ++的新手,有时我很难理解复杂的if语句,谁能帮助我解释以下代码?提前致谢。 鉴于:
int vis[25], g[25][25], Ty[25][25];
for (int i = 1; i < 30; i++)
{
if(!vis[i] && g[x][i] == 1 && Ty[f][i] != n) {...}
}
Vis []是一个数组,仅被初始化,并且此刻没有任何赋值。 那么!vis [i]是什么意思? 它是指vis [i]!= 0还是vis [i] == 1或其他含义?
答案 0 :(得分:1)
int vis[25], g[25][25], Ty[25][25];
声明3个数组。 “ vis”是大小为25的一维数组,“ g”是大小为25x25的2D数组,与“ Ty”相同。
if(!vis[i] && g[x][i] == 1 && Ty[f][i] != n) {...}
在C ++中,如果值是0,则整数在布尔表达式中的值为“ false”,对于所有其他值,其值为“ true”。因此,在if语句中,当vis [i] == 0时,第一个表达式“!vis [i]”的计算结果为true。
当'g'中索引[x] [i]的值等于1时,第二个表达式将为true。
当“ Ty”中的索引[f] [i]上的值不等于某个变量“ n”时,第三条语句的计算结果为true,该变量可能是在程序中某个地方定义的,例如“ x”。 >
*注意-正如drescherjm在评论中指出的那样,for循环最多只能增加24,因为在任一方向上数组的大小均为25,因此访问0-24(含)范围之外的元素是未定义的行为。
答案 1 :(得分:0)
int
只有false
才是0
。这意味着字符串为真。!
将其取反。因此,如果检查:
位置vis
上的数组i
必须为0
。
!vis[i] == !(vis[i] != 0) == vis[i] == 0
在g
,x
上i
的数组值必须为一个
Ty
,f
上的i
数组不能等于n
中的值