我有这行代码:C++ Perincrement不确定的操作对C
front = (++front) % size;
在C我没有得到任何警告,但在C++中我得到警告operation on front may be undefined [-Wsequence-point]
。这种预增量使用如何导致未定义的行为?在我看来,这条线是非常明确的,并且将被解释为:
- 增量前
- 国防部前与大小
- 分配新值前。
是我的编译器只是抛出一个毯子警告?
P.S.我了解警告,如果我正在做类似front = front++;
或天堂禁止front = front++ + front++;
。
编辑:这警告是在码块产生的Windows 64使用GCC(TDM-1)4.6.1
前++ VS ++前不会改变任何东西,左侧等号可以是后置或预先递增的值,这取决于首先评估哪一侧。 AFAIK没有义务在右侧评估=的左侧。 – Borgleader 2014-10-30 18:33:46
我认为thndrwrks的问题取决于这样的想法,即直到'%'和'%'不能发生在'(++ front)'之后才能发生赋值,为了赋予'++'优先级,所以因此没有排序问题。虽然很明显,情况并非如此。我目前对规格不够熟练,无法给出明确的答案,但也许有人可以对此作出说明? – Tommy 2014-10-30 18:37:34
伴侣。发帖前搜索。 – 2014-10-30 18:44:09