【发布时间】:2016-09-30 22:43:52
【问题描述】:
当我在调用 sscanf 时在指向我们正在扫描的字符串的指针上使用后增量时,scanf 实际上对增量值进行操作,而不是我期望的增量之前的值。
这段代码:
for (int i=0;i<=3;++i)
{
unsigned val;
sscanf(abyte+=2,"%2x", &val);
eeprom_cache[i] = val;
}
当 abyte 指向“aabbccdd”时,这个 coee 最终会将 0xbb、0xcc、0xdd 和 0x00 放入 val。根据我对后增量的理解,它应该从 aa 开始。
如果我将代码更改为:
for (int i=0;i<=3;++i)
{
unsigned val;
sscanf(abyte,"%2x", &val);
abyte+=2;
eeprom_cache[i] = val;
}
它有效。
为什么?这不就是帖子增量的全部内容吗?
我在 Windows 10、VS2010、C++ 上运行。
【问题讨论】:
-
+=不是后增量。 -
abyte是什么?是char*吗? -
+=表示在左侧添加一些东西。它不是后增量。
标签: c++ scanf increment post-increment