优先级错误引起的报错

一 写在开头

1.1 本文内容

记录一次因为运算符优先级错误而引起的报错的原因和解决方法。

 

二 报错情况,原因和解决方法

今天在写代码的过程中,发现了一个很有意思的报错。报错情况和出错的代码如下图所示。

出错的代码行是第34和35两行。为什么会报错?很简单,因为在上述两行代码中,点(.)运算先于星号(*)运算执行了。在执行点运算时(array + i)是一个指向结构体的指针,而取指针所指向对象的成员是不能用点运算的。将上述两行代码改成如下形式,问题解决。

1 (*(array + i)).data = t;
2 (*(array + i)).rank = -1;

 

posted @ 2018-04-08 16:07  wallace-rice  阅读(235)  评论(0编辑  收藏  举报