c - 箭头运算符和后增量的优先级?
问题描述
C新手。所以我看到了这行代码
system->word[system->index++] = system->next_char;
是否等同于:
system->word[system->index] = system->next_char;
index++;
职位增量的优先级是什么?在线上的所有操作都执行完成后,它是否只将索引的值增加 1?
解决方案
更新system->index
被定义为未按顺序(未指定在语句中的其他操作之前或之后)的副作用。更新可能发生在其他操作之前、期间或之后。
只要它没有在语句的其他地方使用,它没有排序的事实就无关紧要,因为如果它没有在其他地方使用,那么语句所做的任何事情都不会受到更新发生时的影响。(请注意,即使system->index
在使用值之前对内存进行了更新,编译器也会响应以确保使用更新前的值。)
如果被更新的对象在语句的其他地方以无序的方式使用(也就是说,没有规则指定先使用,更新或其他使用),那么程序的行为将不会由 C 标准定义。
这不是优先级的结果。优先级决定了如何解释表达式的结构,而不是它们操作的顺序。
推荐阅读
- c# - c# 如何撤消 Encoding.UTF8.GetBytes 或转换为 File.ReadAllBytes
- webpack - 使用 html-webpack-plugin 创建 HTML 部分
- angular - Angular-Gridster2 - 网格项目在拖动时重叠
- r - 以 CSV 格式下载数据表
- scala - 为子项目运行 sbt 命令/设置插件中的每个命令?
- php - Laravel 5.6 - 在 updateOrCreate 之后获取更改的值
- javascript - 按钮 EXPAND ALL 的限制
- javascript - es6数组方法如何将多维数组转化为图表数据
- java - Intellij 包 org.testng 不存在
- javascript - 我应该在 javascript 中定义多少个嵌套对象?