如果没有条件?

top*_*opz 10 c++ if-statement multidimensional-array

我今天刚刚发现这个"C++",我无法理解它:

if(array[i][j]) {--i;--j;}

任何人都可以向我解释这项工作如何?我只是不明白.这是什么情况?看起来每次都是如此,但是当我摆脱了IF(所以只剩下这个{--i;--j;})时,它的效果不一样.

我对C++很陌生,所以请轻松解释一下!:)

谢谢!

wkl*_*wkl 20

In C++, a non-zero value can be used to indicate 'success' in a conditional statement.

This is from C99, section 6.8.4.1:

The if Statement

2 In both forms, the first substatement is executed if the expression compares unequal to 0.

From C++03, section 6.4

4作为switch语句之外的语句中的初始化声明的条件的值是隐式转换为bool类型的声明变量的值.如果转换形式不正确,该程序就会形成错误.在switch语句中作为初始化声明的条件的值是声明变量的值(如果它具有整数或枚举类型),或者是隐式转换为整数或枚举类型的变量.作为表达式的条件的值是表达式的值,对于除switch之外的语句,隐式转换为bool; 如果转换形成不良,该计划就是格式错误.条件的值将被简称为"条件",其中使用是明确的.

布尔转换在6.3.1.2中定义

6.3.1.2布尔类型

1当任何标量值转换为_Bool时,如果值比较等于0,则结果为0; 否则,结果为1.

并且int是标量类型.我认为这是你的数组所充满的,因为你可以使用一元++--它们.


Lie*_*yan 10

assuming array is an array of int (or other integral types) the condition will be false if and only if array[i][j] == 0