在C中,
int i = 20;
int j = 5;
int k = i+++--j;
Run Code Online (Sandbox Code Playgroud)
为什么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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
20
21
Run Code Online (Sandbox Code Playgroud)
有谁能告诉我为什么投票?我不确定这是因为我是C的新成员.
C有一个着名的最大咀嚼策略规则.根据这条规则:
i+++--j
Run Code Online (Sandbox Code Playgroud)
被解析为
(i++) + (--j)
Run Code Online (Sandbox Code Playgroud)
(C99,6.4p4)"如果输入流已被解析为预处理标记,直到给定字符,则下一个预处理标记是可构成预处理标记的最长字符序列."
当然,价值i++是i和值--j是j - 1,这样的价值i+++--j是20 + 4相等24.
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |