输出不应该是6,因为它应该打印B [0] [2]? 输出结果是4.这是B [1] [0]
main()
{
int B[2][3]={2,3,6,4,5,8};
printf("%d",**B+2);
}
答案 0 :(得分:5)
答案 1 :(得分:4)
请记住,取消引用运算符的值比precedence高,因此您的表达式等同于(**B) + 2
。换句话说,当您取消引用两次时,会得到B[0][0]
,即2
,然后您添加2
,从而导致最终结果4
。
如果您需要B[0][2]
,那么您应该*(*B + 2)
。
答案 2 :(得分:3)
没有括号。所以首先首先获取第一个元素的值,然后将2添加到它,因此输出为2 + 2 = 4且不是B [1] [0]。当我们使用括号*(* B + 2)时,它首先递增B的地址然后取其值。因此它将是B [0] [2]。
答案 3 :(得分:0)
这是优先事项。请尝试如下:
#include <stdio.h>
int main()
{
int B[2][3]={2,3,6,4,5,8};
printf("%d",*(*B+2));
}