吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 854|回复: 12
收起左侧

[已解决] 关于C++内联函数的一个例题,square(c++)是运行函数再运行C++吗?

[复制链接]
dong555 发表于 2022-12-2 20:53
本帖最后由 dong555 于 2022-12-3 10:04 编辑

例题中  square(c++)是相对于先执行c*c,再执行C++吗,不太理解。我觉得应该先执行C++再c*c吧
#include <iostream>
using namespace std;
inline double square(double x){return x*x;}
int main(void)
{
   int b;

    int c=13;
   cout << "b =" <<  square(4.5+7.5) << endl;     cout << "c =" << c << endl;
    cout << "c square is " <<  square(c++) << endl;
    cout << "now c = " << c << endl;
    return 0;
}


运行结果
b=144
c =13
c square is 169
now c = 14


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

RainPPR 发表于 2022-12-2 21:06
简单说:
1. 先执行 square(c)
2. 再执行 c++(c自增1)
这一行代码相当于:
cout << "c square is " <<  square(c) << endl;
c = c + 1;
xiao14116 发表于 2022-12-2 21:07
不,你的理解有误,内联函数的作用是在生成二进制文件的时候把内联函数编译到调用这个内联函数内,跟执行顺序无关,简单的说,不是内联函数的话,在反编译成汇编代码以后是个独立的函数,而内联函数的代码则在调用它的函数内直接显示成汇编代码
 楼主| dong555 发表于 2022-12-2 21:14
RainPPR 发表于 2022-12-2 21:06
简单说:
1. 先执行 square(c)
2. 再执行 c++(c自增1)

例题中其实 还有一句
b= square(4.5+7.5);

这个b就等于144 ,有点蒙,难道常数就先加起来,有参数就后执行
RainPPR 发表于 2022-12-2 21:26
本帖最后由 RainPPR 于 2022-12-2 21:27 编辑


5bafa40f4bfbfbed313b490977f0f736afc31f61.jpg
百度百科上的
RainPPR 发表于 2022-12-2 21:29
dong555 发表于 2022-12-2 21:14
例题中其实 还有一句
b= square(4.5+7.5);

内联函数不影响函数名或其参数的作用域。内联函数是对编译器的请求。
yuzhangqu 发表于 2022-12-2 21:36
dong555 发表于 2022-12-2 21:14
例题中其实 还有一句
b= square(4.5+7.5);

首先,这个问题跟内联没关系。内联与否绝对不会影响程序运行的结果(最多只会影响速度)。
其次,不管是square(4.5+7.5)还是square(c++)都是先计算括号里面的参数,再调用函数。
只不过4.5+7.5得到12,c++得到c。
c++得到c是因为++放在变量后面,叫做后自增。后自增会保存自增之前的值,然后将变量+1,然后返回之前保存的旧值。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
dong555 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| dong555 发表于 2022-12-2 21:42
yuzhangqu 发表于 2022-12-2 21:36
首先,这个问题跟内联没关系。内联与否绝对不会影响程序运行的结果(最多只会影响速度)。
其次,不管是 ...

谢谢 确实这样 把c++ 改成++c就变成196了
jiang1122 发表于 2022-12-2 21:50
感谢分享
ltg1831 发表于 2022-12-2 21:58
如果你不是学生,不建议研究这类题目
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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