gpt4 book ai didi

c++ - sizeof 运算符如何计算函数返回类型的大小?

转载 作者:太空狗 更新时间:2023-10-29 21:09:54 27 4
gpt4 key购买 nike

代码-

#include <bits/stdc++.h>
using namespace std;

int *fun()
{ static int a;
++a;
cout<<"value of a = "<<a<<endl;
return &a;
}

int main() {
cout<<"simple call \n";
fun();
cout<<"calling inside sizeof \n";
cout<<sizeof(fun())<<endl;
cout<<"calling inside pow \n";
cout<<pow(2,*fun())<<endl;
return 0;
}

输出-

simple call 
value of a = 1
calling inside sizeof
8
calling inside pow
value of a = 2
4

我的疑问是 sizeof 运算符如何计算函数返回类型的大小。我假设函数首先被调用,然后它将地址返回给它的静态变量,并且 sizeof 运算符对该值进行操作。但是在这里,它直接打印了 sizeof 指针。如果我在 pow() 中使用相同的乐趣,它首先被调用,然后进行进一步的计算。

最佳答案

不,sizeof 从不 计算其操作数(C 可变长度数组除外,但由于这是一个 C++ 问题,因此无关紧要)。来自 C++17 [expr.sizeof]:

The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is an unevaluated operand (Clause 8), or a parenthesized type-id.

在你的情况下,因为 fun() 返回 int * (编译器知道这一点,因为你告诉它了),就好像你要求 sizeof(int *).

关于c++ - sizeof 运算符如何计算函数返回类型的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com