Yes ,I can ! 2019-01-12 17:02 采纳率: 0%
浏览 701
已采纳

请问ap =( int *) &a;这是什么意思?ap++;bp++;为什么要用这两个语句?为什么a,b两个值可以交换?

#include "pch.h"
#include
using namespace std;
int main()
{
double a = 123.456, b = 456.789;
int ap, *bp;
ap =( int *) &a;
bp =(int
)(&b);
cout << "a=" << a << "b=" << b << endl;
*ap = (*ap) ^ *(bp);
*bp = (*ap) ^ (*bp);
*ap = (*ap) ^ (*bp);
ap++;
bp++;
*ap = (*ap) ^ *(bp);
*bp = (*ap) ^ (*bp);
*ap = (*ap) ^ (*bp);
cout << "a=" << a << "b=" << b << endl; cout <<*ap << *bp;
return 0;
}

  • 写回答

1条回答 默认 最新

  • _ZGq 2019-01-12 17:34
    关注

    ap=(int*)&a; 这句话是把a的地址(double*)型转化成int*型,把int*的这个值赋值给ap这个int*型指针。

    涉及到^异或的前三行(ap++前面)是交换a和b的值。(用异或运算交换值)
    ap++;bp++; 这两句话是让ap和bp指向的地址往前进sizeof(int)个字节,访问可一个未知的地方。
    接下来三行是把现在ap和bp所指向的值交换。(因为sizeof(double)>sizeof(int),所以会交换一部分a和b)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题