为什么这个if语句是真的?不同的地址

-4 c arrays if-statement

我不明白为什么这个if语句是真的可以有人向我解释一下吗?

int a[8][8] = {0};

if(&a[7][0] == &a[0][0] || &a[5][1])
    printf("true\n");
Run Code Online (Sandbox Code Playgroud)

adr*_*tam 5

这有条件的

if (&a[7][0] == &a[0][0] || &a[5][1])
Run Code Online (Sandbox Code Playgroud)

手段

if ( (&a[7][0] == &a[0][0]) || (&a[5][1] != 0) )
Run Code Online (Sandbox Code Playgroud)

在所有情况下,您永远不会找到a[5][1]零地址.所以你的条件总是得到满足.

您可能考虑过这种情况:

if (&a[7][0] == &a[0][0] || &a[7][0] == &a[5][1])
Run Code Online (Sandbox Code Playgroud)