【发布时间】:2016-11-04 06:07:57
【问题描述】:
假设我将代码分配给 ASCII 字符,其中代码 1 分配给 ASCII 值 0、NUL 字符等等。我正在迭代地执行此操作,目前使用 i+++1,即:
for (int i = 0; i < 256; i++) {
// assign code i++ +1
arr[i].code = i++ +1;
}
如果我用 ++i 代替,就够了吗?
【问题讨论】:
-
请出示实际代码;不是空循环中的模糊评论。
-
@Danh 绝对不是。对于奖励积分,您可以与 preincrement (
++i+1) 进行比较和对比。 -
@EdwardThomson 我知道
(++i+1)是有效的声明,但我不知道最大咀嚼策略。我唯一能找到的是这个链接stackoverflow.com/questions/7233317/…,上面写着ANSI 标准规定,是不是用ISO C 写的? -
@Danh 是的,它在 C11 规范第 6.4 节第 4 段中:“如果输入流已被解析为预处理标记,直到给定字符,则下一个预处理标记是最长的可以构成预处理标记的字符序列。” 第 6 段中给出了一个示例:“程序片段
x+++++y被解析为x ++ ++ + y,这违反了对增量运算符的约束,甚至尽管解析x ++ + ++ y可能会产生正确的表达式。"
标签: c