【发布时间】:2015-08-04 21:13:49
【问题描述】:
A. while (*t) *s++ = *t++;
B. do { *s = *t++; } while (*s++);
C. while (*s) *s++ = *t++;
D. do { *s++ = *t++; } while (*t);
答案是B,为什么别人错了?
【问题讨论】:
标签: c loops while-loop
A. while (*t) *s++ = *t++;
B. do { *s = *t++; } while (*s++);
C. while (*s) *s++ = *t++;
D. do { *s++ = *t++; } while (*t);
答案是B,为什么别人错了?
【问题讨论】:
标签: c loops while-loop
而(*s++=*t++)
A, C: *s 和 *t 的值只有在满足条件时才会改变和增加(原始代码中至少增加 1 个)。 D:将被分配,但 *t 将在它已经增加后检查(*s 将在 *s 或 *t 增加之前检查)。 B:将*t正确分配给*s,然后检查*s,然后增加它。
【讨论】:
A.) 与 B.)
B 在检查结果是否为 0 之前总是会复制第一个值。
A 将首先进行测试,如果结果为 0,它将在复制第一个值之前停止。
与 A 类似,C 先进行测试,如果第一个值为 0,则永远不会复制值。
【讨论】: