内联赋值语句

时间:2013-07-28 20:18:08

标签: c++ char buffer assignment-operator

我正在进行LZSS解压缩算法的实现,其中有一个4096个字符的缓冲区(或者你喜欢的任何大小)。此实现将文件输出到char *,因为我想使用std :: ofstream输出文件。我确实让它工作,但是以一种奇怪/古怪的方式(至少对我而言)。它与我所知道的分配算子有关。所有类型都相同(char)

如果有

outputFileStream.write((char *) &buffer[byteIndex1++ & 0xFFF]);
buffer[byteIndex2++ & 0xFFF] = buffer[byteIndex1 & 0xFFF];

这会失败并给我损坏的数据,但如果我有这个

char temporary;

buffer[byteIndex2++ & 0xFFF] = temporary = buffer[byteIndex1++ & 0xFFF];

outputFileStream.write((char *) &temporary, 1);

这将有效。我不理解正在发生的操作顺序吗? (从右到左执行操作)如果我那么这两个代码片段是否会起作用呢?

0 个答案:

没有答案