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/