首页 > 试题广场 >

下面程序执行后输出结果为( ...

[单选题]
下面程序执行后输出结果为(      )
#include <stdio.h>
int main()
{ 
int i, j, m=6,n=4,  *p=&n, *q=&m;

i=p==&m;
j=(-*p)/(*q)+7;

printf("i=%d,j=%d\n", i,j);

return 0;
}


  • 编译错误
  • i=0,j=7
  • i=0,j=0
  • 其他几项都不对
i=p==&m根据优先级,等价于i=(p==&m) p指向n的地址,所以p==&m为假值为0所以i=0 j=(-*p)/(*q)+7,p指向n的地址,所以*p=4,同理*q=6因而j=(-4)/6+7=7
发表于 2019-08-22 02:59:19 回复(0)
在这里还有一点就是,因为*p和*q两个指针都是整型指针,解引用得到的是整型的数,所以,-4/6之后所得的结果是0,不要用分数去和7进行加减。
编辑于 2019-09-14 21:52:50 回复(0)
对 *p=&n这里产生了疑惑,忽略了前面的int,整行都是在做定义,因此实际上是 int* p=&n; 而非 *p=&n; 区别指针的定义和指针的使用,没有毛病
发表于 2019-08-28 15:45:01 回复(0)