c - C 中的二维数组,t+= tab[i][j] 是什么意思?

标签 c arrays 2d

int tab[][3] = {
    {1, 2, 3},
    {6, 5, 4},
    {7, 8, 9}
};

main(){
   int i, j, t=0;
   for(i=2, j=0; i; i--, j++){
       t += tab[i][j++];
       printf("%d", t);
   }

我不明白为什么输出是11,首先i = 2; (7, 8, 9) and j = 0 然后 t += tab[i][j++] 这意味着 7, 8, 9 + (j++ 现在是 1) (2, 5, 8) 这意味着 7 + 8 + 9 + 2 + 5 + 8?我不明白这个。 t += tab[i][j++]

最佳答案

两件事:

首先,您似乎假设 t += tab[i][j] 以某种方式向 t 添加了一个完整的 vector 或一行,即类似于 (7,8,9)。然而,对 tab[i][j] 的访问代表一个特定的单元格值(不是一行),并且对于 i==2, j==0,这表示 tab[2][0] 并产生值 7

其次,请注意您有两条递增 j 的语句,一条在 for 部分,另一条在 tab[i][j++](注意 j++)。所以当 i 减少到 1 时,j 实际上增加到 2,这样第二个值将是 tab[1][2],即4

那么 7 + 4 = 11 应该不再是一个惊喜 :-)。

希望对您有所帮助。

关于c - C 中的二维数组,t+= tab[i][j] 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44865467/

相关文章:

java - 如何在不加载到内存的情况下调整图像大小?

c - 我是否正确地在 C 中实现了双向链表的删除节点函数?

c - 查找数字是偶数还是奇数的最快方法是什么?

c - 由 main() 修改并由 ISR() 访问的全局变量

arrays - 在程序集中打印数组元素

c++ - C++ 图形库

c - 浮点乘法在 C 中的意外输出

python - 为什么 Python 不操作这个数组?

JavaScript - 将数组分成具有随机数量对象的组

c++ - 在 OpengL 中多次重复图像