为什么不打印最终字母(' g')?

时间:2018-03-15 23:52:16

标签: c for-loop decrement

我知道打印的第一个字母是b c d e f。为什么' g'没印?当我5岁的时候,' f'打印出来。 i减少到4,因此它应该进入for循环。相反,尽管我小于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;

3 个答案:

答案 0 :(得分:0)

这是一个逻辑问题,我将尝试说明

1º loop -> i = 1, arr[--i] = a

2º loop -> i = 3, arr[--i] = c

3º loop -> i = 5, arr[--i] = e

循环结束// i = 7, strlen(arr)-1 = 5

  

注意:我没有在C中调试它,但正如我所说,这是一个逻辑   问题...

我认为在发生此类事件时尝试使用IDE调试它是个好主意

答案 1 :(得分:0)

for for循环写i<strlen(arr)i<=strlen(arr)-1而不是i<strlen(arr)-1;因为当它打印f i=5的值然后它将i递减1然后值为i=4,然后将i的值增加2,然后i=6,其中您的条件为i<6

答案 2 :(得分:0)

试试这个:

 for (i = 1; i < strlen(arr); i+=2)