首页 > 试题广场 > 下面代码段执行的输出结果为 int a=2,*pa=&am
[单选题]
下面代码段执行的输出结果为
int a=2,*pa=&a;
int b=3,*pb=&b;
*pa*=*pa**pb;
cout<<a<<endl;

  • 2
  • 6
  • 12
  • 语法错误
推荐
选C。实际考察的是通过指针操作内容
根据题干分析:
  1. int a=2,*pa=&a; 指针pa指向的是变量a的地址
  2. int b=3,*pb=&b; 指针pb指向的是变量b的地址
  3. 表达式:*pa*=*pa**pb; 根据优先级等价于(*pa)*=(*pa)*(*pb)
  4. 最终结果:*pa为2,*pb为3   经过计算2*3*2赋值给*pa,同时也改变了指针pa指向的地址内容a,所以结果为12
编辑于 2019-10-10 14:38:22 回复(0)
选C

解引用“ * ”的优先级比 乘“*” 高;乘“ * ”的优先级比乘后赋值“ *= ”高。
解引用与乘后赋值的结合性都是从右到左,综上,题干中表达式等价于
*pa *= 2*3;
*pa = (*pa) * 6;
*pa = 12;
编辑于 2019-10-09 18:19:34 回复(0)
答案:C
解答:题目最终输出的为a的值,其中表达式*pa=&a表示pa指向a的地址,任何修改*pa的表达式等价于修改a的值。然后,考虑到c语言中单目运算符的优先级高于双目运算符,因此表达式*pa*=*pa**pb等价于(*pa)*=(*pa)*(*pb),最终*pa=12,因此a的值也为12
发表于 2019-10-09 18:01:14 回复(0)