C 为什么这个程序不能给出预期的输出?

C 为什么这个程序不能给出预期的输出?,c,for-loop,int,C,For Loop,Int,这个程序(C)没有输出我所期望的: int main() { int i, j ; for ( i = 1 ; i <= 2 ; i++ ) { for ( j = 1 ; j <= 2 ; j++ ) { if ( i == j ) continue ; printf ( "\n%d %d\n", i, j ) ; } }

这个程序(C)没有输出我所期望的:

int main()
{
    int i, j ;
    for ( i = 1 ; i <= 2 ; i++ )
    {
        for ( j = 1 ; j <= 2 ; j++ )
        {
            if ( i == j )
                continue ;
            printf ( "\n%d %d\n", i, j ) ;
        }
    }
}
intmain()
{
int i,j;

对于(i=1;i编号3无法通过循环的索引到达。

编号3无法通过循环的索引到达。

编号3的
i
j
的值通过以下顺序:

i j
---
1 1
1 2
2 1
2 2
请注意,
i++
j++
增量发生在循环体的每次迭代之后

调用您的
printf
的唯一情况是
i
j
不同。这意味着您得到:

1 2
2 1

i
j
的值按以下顺序排列:

i j
---
1 1
1 2
2 1
2 2
请注意,
i++
j++
增量发生在循环体的每次迭代之后

调用您的
printf
的唯一情况是
i
j
不同。这意味着您得到:

1 2
2 1

问题是:为什么您认为它应该从13开始,而不是从12开始?在第二次执行printf后,即在打印12之后,控件重定向到内部for循环,这取决于条件验证“如果不使用
if
,您希望得到什么样的输出?控件甚至会在递增条件后验证该条件,因此3结果为false,因此输出为@pmg而不使用“if”输出将是1 1 2 1 2 2问题是:为什么您认为它应该从1 3而不是1 2开始?在第二次执行printf后,即在打印1 2后,控件重定向到内部for循环,这是在验证条件后进行的“如果不使用
if
,您希望得到什么输出?控件甚至会在递增条件后验证条件,因此3结果为false,因此输出。@pmg如果不使用“if”,则输出为1 1 2