一 写在开头
1.1 本文内容
记录一次因为运算符优先级错误而引起的报错的原因和解决方法。
二 报错情况,原因和解决方法
今天在写代码的过程中,发现了一个很有意思的报错。报错情况和出错的代码如下图所示。
出错的代码行是第34和35两行。为什么会报错?很简单,因为在上述两行代码中,点(.)运算先于星号(*)运算执行了。在执行点运算时(array + i)是一个指向结构体的指针,而取指针所指向对象的成员是不能用点运算的。将上述两行代码改成如下形式,问题解决。
1 (*(array + i)).data = t;
2 (*(array + i)).rank = -1;