C 为什么这个程序不能给出预期的输出?
这个程序(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 ) ; } }
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