如何解决在C编程中,为什么方括号在语句中获得比前缀运算符++更高的优先级:“a[i] = ++i;”?
我通过基于 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 举报,一经查实,本站将立刻删除。