【发布时间】:2019-04-23 20:32:02
【问题描述】:
我正在阅读来自该网站的答案,其中说以下内容未定义
char *fubar = "hello world";
*fubar++; // SQUARELY UNDEFINED BEHAVIOUR!
但不是先完成fubar++,也就是说将指针移动到e,然后完成*(),这意味着将e提取出来。我知道这应该在聊天中被问到(我是一个善良的人)但没有人,所以我在这里问是为了引起注意。
【问题讨论】:
-
是增加地址还是增加内容,对于内容:(*fubar)++;对于地址 fubar++;
-
@SPlatten:我都不想要,我只想知道答案是否会导致未定义的行为......
-
你没有分配,所以'*'没有意义。
-
糟糕。我不知道这一点。 ;-)
-
经验教训:遵守在同一个表达式中永远不要将 ++ 与其他运算符混合的规则。出于多种原因,这是一件坏事:可读性、可维护性、潜在的未定义行为,