学习笔记
c++
今天在做算法题的时候连着被几道题卡住了,明明逻辑和正解一致,但是结果存在差异,找原因的时候发现了一个以前没有踩过的坑,或者说以前踩了现在又忘了。
int a[3] = {0, 1, 2};
int i = 0;
a[i++] = a[2]//数组变成{2, 1, 2}显然在这里是先进行a[i] = a[2]的赋值操作,再对i进行加一操作。
a[++i] = a[2]//数组变成{0, 2, 2}显然在这里是先进行i加一操作,再进行a[i] = a[2]的赋值操作。
这和平时循环中的i++, ++i操作有着明显的区别,以前我一直把两者进行混用,因为觉得++i和i++没有区别。这几天刚开始刷算法题发现有好多平时不注意的细枝末节在跑结果的时候都会产生异常,这也算是警示了吧。