简单嵌套for循环在C中无法正常工作(2D数组初始化)
我不明白为什么这个简单的代码有这种奇怪的行为 `代码:简单嵌套for循环在C中无法正常工作(2D数组初始化),c,arrays,loops,matrix,2d,C,Arrays,Loops,Matrix,2d,我不明白为什么这个简单的代码有这种奇怪的行为 `代码: int main(){ int m[10][10]; int i=0; int j=0; for (i;i<10;i++) { for (j;j<10;j++) { m[i][j]=i+j; printf("%d ", m[i][j]); } printf("
int main(){
int m[10][10];
int i=0;
int j=0;
for (i;i<10;i++) {
for (j;j<10;j++) {
m[i][j]=i+j;
printf("%d ", m[i][j]);
}
printf("\n");
}
printf("%d ", m[4][3]);
}
intmain(){
int m[10][10];;
int i=0;
int j=0;
对于(i;i而言,m[4][3]
正在打印32678
的原因是,在外部循环的第一次迭代期间调用printf()
时,数组的该部分尚未初始化
内部循环代码在一次迭代后结束,因为每次迭代i
后,您从未将循环计数器j
初始化为0。请改用此代码:
int main() {
int m[10][10];
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++) {
m[i][j] = i + j;
printf("%d ", m[i][j]);
}
printf("\n");
}
}
intmain(){
int m[10][10];;
对于(int i=0;i
值之间有9
行,因为printf(“\n”);
run9
time在循环内,然后打印m[4][3]
的值(当然不是它的值,它只是抛出一些随机值).您的for
循环有点奇怪,因为您实际上没有在初始化表达式中为循环计数器赋值。例如:
for (i;i<10;i++) {
你应该把它修好
请注意,例如,j;
而不是j=0;
,因为初始化表达式仍然有效,所以它不起任何作用。考虑for(j;j)您在哪里找到这样的for循环:for(i;i当只有一个循环时,它会工作,初始化在代码之前。我认为这是一个坏习惯,我应该改掉。好的@Gandi,但是如果你在循环之前初始化i
,你可以为它写(;他在c语言中工作,for循环头中的声明不起作用。这并不让我感到惊讶,但他在循环中使用的逻辑是一个更大的问题。至少他的程序将编译并输出一些东西……这一点在最小的调试尝试下是显而易见的:(我现在明白了,答案是显而易见的。在问这个问题之前,我至少花了8个小时寻找类似的问题,但不知何故,我的大脑没有注意到j=0,我不知道为什么。我可能已经搜索了整整一周,可能没有注意到这个问题。有时这些停电会发生,至少它们发生在我身上。(不过,谢谢你教我“公然”这个词,英语不是我的母语,这是我第一次看到它)。
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
for (i;i<10;i++) {
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {