【发布时间】:2018-08-24 22:52:46
【问题描述】:
我知道打印的第一个字母是 b c d e f。为什么不打印'g'?当我 5 岁时,打印“f”。 i 减为 4,因此它应该进入 for 循环。相反,尽管 i 小于 6 (strlen(arr)-1=6),但它不会进入。
char* arr = "abcdefg"; //String
int i;
for (i = 1; i < strlen(arr)-1; i+=2) //i is incremented by 2.
{
printf("%c ", arr[i--]); //Here i is decremented
}
返回 0;
【问题讨论】:
-
这只是胡闹。
-
i=5,然后 i-- 变为 4,然后 i+=2 变为 6,然后 for 循环不再执行,因为 i 为 6。
-
调试器在这里派上用场。
-
循环控制变量属于循环本身,你不应该在循环内部改变它。如果你做了愚蠢的事情,期待愚蠢的结果。
-
除了摆弄控制变量,
i < strlen(arr)-1;会漏掉最后一个字符,应该是i < strlen(arr);