gpt4 book ai didi

c - 前缀和后缀运算符有什么区别?

转载 作者:行者123 更新时间:2023-11-30 16:46:07 34 4
gpt4 key购买 nike

以下代码打印值 9。为什么?这里 return(i++) 将返回值 11,由于 --i 该值本身应该是 10,谁能解释一下这是如何工作的?

#include<stdio.h>
main()
{
int i= fun(10);
printf("%d\n",--i);
}

int fun (int i)
{
return(i++);
}

最佳答案

++ 的后缀版本和前缀版本之间存在很大差异.

在前缀版本(即 ++i )中, i 的值递增,表达式的值是 i值.

在后缀版本(即 i++ )中, i 的值递增,但表达式的值是 i原始值.

我们来逐行分析以下代码:

int i = 10;   // (1)
int j = ++i; // (2)
int k = i++; // (3)
  1. i设置为10 (简单)。
  2. 这一行有两件事:
    • i增加到11 .
    • i值被复制到 j 。所以j现在等于11 .
  3. 这一行还有两件事:
    • i增加到12 .
    • i原始值(即 11 )被复制到 k 中。所以k现在等于11 .

运行代码后,i将为 12,但两者都是 jk将会是 11。

相同的内容适用于 -- 的后缀和前缀版本.

关于c - 前缀和后缀运算符有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874698/

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