c - ++structure.field 中的运算符层次结构
问题描述
这个例子:
++structure.field;
递增field
而不是给出“错误的类型参数来递增”编译器错误,尽管 ++ 和 . 运算符是同样分层的ergo:应该从左到右执行。
我在这里错过了什么吗?
解决方案
前缀和后缀++
具有不同的优先级。.
具有比前缀增量运算符更高的优先级,如cppreference.com所示。
.
和后缀增量具有相同的优先级。如果您写了structure.field++
,那么它们将具有相同的优先级,并且关联性将开始解决歧义,(structure.field)++
而不是structure.(field++)
.
推荐阅读
- raku - 馈送操作员管道的行为
- c# - 将文本文件读入对象
- django - 使用 docker compose 为反应多阶段构建设置 nginx 代理
- java - 使用 jndi 配置启动“java.lang.IllegalStateException:无法加载 ApplicationContext”
- php - 关于降低我的 WordPress 网站速度的查询
- python - python中CSV文件的行数错误
- css - 带有 HTML 中所有 CSS 的样式标签
- android - /storage/emulated/0/android.system.ErrnoException:打开失败:EACCES(权限被拒绝)
- sql - 我的 SQL 查询出现 ORA-00932 和 ORA-22835 错误
- python-3.x - Python IMAP4 追加失败