juhugufudu 发表于 2020-1-1 21:24:55

What's wrong?

#include<stdio.h>

int main()
{
    int a = {
      {1,2,3},
      {4,5,6}
    };
    int b = {
      {1,4},
      {2,5},
      {3,6}
    };


    /*0 iw k-j
    a*b
    a*b
    a*b
    */
    int i,j,in=0;
    int r = {0};
    for(i = 0;i < 2;i++)
    {
      for(j = 0; j < 3;j++)
      {
            r = a*b;
      }
    }
    //printf("%d %d\n",b,b);
    printf("\
| %d %d %d |   | %d %d |   | %d   %d |\n\
| %d %d %d | * | %d %d | = | %d   %d |\n\
               | %d %d |\n",a,a,a,\
               b,b,r,r,a,a,a,\
               b,b,r,r,b,b);
}结果却是:
| 1 2 3 |   | 25 36 |   | 1   4 |
| 4 5 6 | * | 5 3 | = | 9   16 |
               | 3 6 |请指教到底是为什么,b与b发生了变化?





Fowindy 发表于 2020-1-1 21:24:56

int r = {0}
这里改成int r = {0}

人造人 发表于 2020-1-1 21:34:23

首先27行有问题, r = a*b;

然后,你为什么用两层for循环?


// int r = {0};                // 为什么要留4个int
int r = {0};
for(size_t i = 0; i < 3; ++i)
{
        r = a * b;
}
页: [1]
查看完整版本: What's wrong?