gpt4 book ai didi

c - 如何在C中确定i+++--j

转载 作者:行者123 更新时间:2023-11-30 20:44:36 25 4
gpt4 key购买 nike

在 C 语言中,

int i = 20;
int j = 5;
int k = i+++--j;

为什么 k=24?

根据我的理解,k = (i)++ + (--j) 所以它是 (20 + 4)++ = 25。

好的。这是我为测试编写的一个小程序,是的,后增量是在分配 k 后完成的。

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

输出:

20
21

谁能告诉我为什么投反对票?我对此并不确定,因为我是 C 的新用户。

最佳答案

C 有一个著名的最大咀嚼策略规则。根据这条规则:

i+++--j

被解析为

(i++) + (--j) 

(C99, 6.4p4) "If the input stream has been parsed into preprocessing tokens up to a given character, the next preprocessing token is the longest sequence of characters that could constitute a preprocessing token."

当然,i++ 的值为 i--j 的值为 j - 1 >,因此 i+++--j 的值为 20 + 4 等于 24

关于c - 如何在C中确定i+++--j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20456546/

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