prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 3.9

那么,如果我写

a[i] = i++;
并且我不关心a[]的哪个单元格被写入,这段代码就是正确的,并且i会增加一,对吗?


不一定!首先,如果你不在乎a[]被写入哪个单元格,为什么还要编写似乎会写入a[]的代码呢?更重要的是,一旦一个表达式或程序变得未定义,所有方面都变得未定义。当一个未定义的表达式(表面上)有两种可能的解释时,不要自欺欺人地认为编译器会选择其中一种。标准并不要求编译器做出显而易见的最佳选择,有些编译器也不会。在这种情况下,我们不仅不知道a[i]a[i+1]是否被写入,而且完全不相关的数组单元格(或内存的任何随机部分)也可能被写入,并且无法预测最终值i会收到。请参阅问题 3.23.311.3311.35


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管