我正在从缓冲区读取字节。但有时我正在阅读的是一个单词或更长的内容。
// assume buffer is of type unsigned char *
read_ptr(buffer+(position++))
这很好,但我怎样才能将位置增加 2 或 4?我无法让 +=
运算符进行后增量,是吗?
原因是,我想要评估这个可怕的大表达式,同时增加位置变量。
我想我想出了自己的解决方案。我很确定它有效。但是每个人都会讨厌它,因为这不是可读的代码。
read_ptr(buffer+(position+=4)-4)
在对其进行一些测试以确保它做正确的事情后,我将把它变成一个宏。
综上所述:
不要这样做。这只是一个坏主意,因为这是生成无法维护的代码的那种事情。但是……事实证明,将任何预递增运算符转换为后递增运算符确实非常容易。
原文由 Steven Lu 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,我确实在编辑中回答了我的问题……基本上我想要的是一个表达式,它的计算结果为原始值,但具有增加任意数量的副作用。这里有一些宏。