gpt4 book ai didi

c - C 中的后递增运算符

转载 作者:太空狗 更新时间:2023-10-29 15:17:59 25 4
gpt4 key购买 nike

我写这段C代码的时候是随便编码的:

#include <stdio.h>
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",sizeof(i++));
printf("i : %d\n",i);
return 0;
}

当我运行代码时,我得到的结果是,

i : 10
sizeof(i++) is: 4
i : 10

我对这个结果感到困惑,因为我预计 sizeof 运算符中的 i++ 会增加 i。但似乎不是。出于好奇,我编写了以下程序:

#include <stdio.h>
int add(int i)
{
int a = i + 2;
return 4;
}
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",add(i++));
printf("i : %d\n",i);
return 0;
}

对于这个程序,输出是:

i : 10
sizeof(i++) is: 4
i : 11

现在我越来越困惑了。

对不起,如果这是一个菜鸟问题(我就是这样),但我什至不明白如何用谷歌搜索这样的问题!

为什么这两个程序中 i 的值不同?请帮忙!

最佳答案

sizeof() 不是运行时函数。它只是为您提供变量的大小或函数返回值的大小。

因此在第一个示例中,您只是获取整数后增量运算符结果值的大小,该整数是一个整数……4 字节。

在您的示例中,您只是打印返回 4 的方法的返回值,然后变量递增,然后打印 11。

关于c - C 中的后递增运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634932/

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