找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 71|回复: 0

检测点10-2

[复制链接]

620

主题

336

回帖

1057

积分

管理员

积分
1057
发表于 2026-3-8 21:46:08 | 显示全部楼层 |阅读模式
检测点10-2

1.修改源文件c1001.c,去掉对象p和q的初始化器,改用四条表达式语句为它们的成员赋值。这四个表达式里存在左值转换吗?为什么?
参考答案:
# include <stdio.h>
# include <math.h>


int main (void)
{
    struct {float x; float y;} p, q;
    p.x = 1.0f;
    p.y = 5.5f;
    q.x = 9.7f;
    q.y = 15.2f;


    printf ("%.2f\n", sqrt (pow ((q.x - p.x), 2) + pow ((q.y - p.y), 2)));
}

在上述四个表达式里不存在左值转换,因为p.x、p.y、q.x和q.y是赋值运算符的左操作数。

2.在源文件c1001.c中调用了pow函数,该函数需要何种类型的参数?传递的实际参数是什么类型?匹配吗?如果不匹配为何还能调用?
答:pow需要double类型的参娄,但实际传递了float类型的参数,所以不匹配。在这种情况下,会自动将float类型的参数转换为double类型。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-30 18:19 , Processed in 0.570166 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表