coco1312 2015-11-28 15:42 采纳率: 0%
浏览 1397
已采纳

C语言若有以下定义和语句

int *p,k=10; double *q,f=5.6; p=&k;q=&f; 执行语句p=(int *)q;后,*p的值是()A)一个整数 B)5 C)6 D)10====参考答案是A,求详细解释

  • 写回答

6条回答 默认 最新

  • lzslywl 2015-11-29 00:48
    关注

    q一开始是指向double类型的变量,然后强转为指向int类型的指针并赋值给p,虽然强转了,但是q依然指向存储double类型5.6的8个字节的内存区域的起始地址,然后p也指向这段内存,然后对p进行取值,因为p是int类型,所以*p就取得了这段内存的前面四个字节的内容,double类型的机内表示你懂的,其实*p取得的是“垃圾值”。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数