我从未在实际代码中看到用于预增量和后增量的用例.我经常看到它们的唯一地方是谜题. 我的观点是,它引入了更多的混淆而不是有用. 是否有任何真实的用例场景 不能通过使用=来完成
我的观点是,它引入了更多的混淆而不是有用.
>是否有任何真实的用例场景
>不能通过使用=来完成
y = x
y = x
x = 1
for (i = 0; i < 10; i++) printf ("%d\n", i);
有:
i = 0; while (i < 10) { printf ("%d\n", i); i = i + 1; }
因为任何for也可以使用while,或:
i = 0; loop: if (i < 10) { printf ("%d\n", i); i = i + 1; goto loop; }
因为任何循环结构都可以构建在条件和goto之外.但是(我希望)你不会那样做,对吗?
(a)我有时喜欢向我的学生解释这个简单的陈述和副作用,这些东西允许C代码更简洁,通常没有或只有最小的可读性损失.
声明:
y = x++;
该语句将x分配给y,副作用是x随后递增. x是相同的,只是预先发生副作用.
类似地,赋值的副作用是它评估为赋值,这意味着您可以执行以下操作:
while ((c = getchar()) != -1) count++;
这使得像:
42;
完全有效但无用的C语句.