gpt4 book ai didi

c - 后缀在前缀之前?

转载 作者:行者123 更新时间:2023-11-30 20:13:39 24 4
gpt4 key购买 nike

我已阅读 here并在 here该后缀先于前缀。

int a = 5;
int b = 5;
printf("%d\n",a++);
printf("%d\n",++b);

但是这段代码的输出将是 5,6。那么这有什么意义呢?

最佳答案

您的链接中讨论的是运算符优先级。这不会影响后期增量的工作。后增量运算符增加计算表达式后的值。

Post-increment operator is used to increment the value of variable as soon as after executing expression completely in which post increment is used.

这意味着即使你有这样的声明

int i = 0 , j = 5 , k ;
k = ++i + j++ ;

将计算++i(i变为1)并计算表达式,从而k得到值6 ,将值 6 赋给 k 后,j++ 的效果就位,并且 j 变为 6

Operator precedence determines how operators are grouped, when different operators appear close by in one expression. For example, ' * ' has higher precedence than ' + '. Thus, the expression a + b * c means to multiply b and c , and then add a to the product (i.e., a + (b * c) ).

但是优先级不会改变后缀增量的工作方式。仅在计算表达式后才会增加值(该部分与其优先级无关)。

我给你一个简单的例子(希望你了解如何使用指针)

#include<stdio.h>
int main()
{
int a[] = { 11, 22 };
int x;
int *p = a;
x = *p++;
printf( " *p = %d\n",*p );
printf( " x = %d",x );
}

其输出是

 *p = 22
x = 11

可以引用这个ideone证明链接。

现在让我们解释一下。 ++ 的优先级高于 * ,因此代码与

相同
x = * ( p++ );

也就是说,++ 将使指针 p 指向数组的下一个地址,但这部分仅在计算表达式之后完成(在换句话说,在将 *p 的值分配给 x 之后)。因此,在表达式之后,p 将指向下一个地址,该地址的值为 22,而 x 仍将获得值 11 .

希望这能让大家清楚(这个例子可能有点难以理解,但它是最好理解的例子之一)

关于c - 后缀在前缀之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319394/

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