问题描述
我通过基于 gcc 的 C 编译器运行了以下代码:
int main() {
int i = 0; // Line 1
static int a[10]; // Line 2
a[i] = ++i; // Line 3
printf("%d %d",a[0],a[1]); // Line 4
return 0; // Line 5
}
根据教科书《The C Programming Language by Brian Kernighan and Dennis Ritchie》和网站:https://en.cppreference.com/w/c/language/operator_precedence中提供的优先级表:方括号(数组下标运算符)的优先级高于prefix运算符++。
在运行程序时,我收到的输出是:a[1] = 1。
我不明白为什么操作顺序不是如下:
- a[0] (把 i = 0)
- ++i (将 i 增加 1)
- a[0] = 1 (将 i 的值赋给 a[0])
而是作为
- ++i (将 i 增加 1)
- a[1] (把 i = 1)
- a[1] = 1 (将 i 的值赋给 a[1])
打破优先规则。请帮助我知道我哪里出错了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)