【发布时间】:2017-10-01 15:24:02
【问题描述】:
我正在尝试比较表示矩阵的二维数组中的数据。 由于它是一个稀疏矩阵,我创建了二维数组 compactMatrix,其中包含值矩阵入口不为空的行和列。
我正在使用此代码进行比较:
if(compactMatrix[0][i] == compactMatrix[1][k] &&
compactMatrix[1][i] == compactMatrix[0][k]){
Do stuff...
}
i 和k 是我目前在forloop 中查看的索引。
要知道,我调试了compactMatrix[0][i]和compactMatrix[1][k]和compactMatrix[1][i]和compactMatrix[0][k]的值确实相等。
尝试使用打印值
j = compactMatrix[0][i];
l = compactMatrix[1][i];
printf("%i %i", &j, &l);
但它给了我指针地址,我猜。
所以,我想知道为什么它在 if 子句中返回 false 以及如何正确修复它。
【问题讨论】:
-
严格来说,这个
printf("%i %i", &j, &l);会导致UB。 -
不要描述您的代码,但显示minimal reproducible example
-
应该是
printf("%i %i", j, l); -
你们真的没有明白我在问什么。我问的是 if 子句,而不是 print。
-
@MichaelWalz,我提供了一个最小、完整和可验证的 if 子句示例,它给出了 UB
标签: c arrays matrix multidimensional-array