c - 为什么不打印字母final char ('g' )?

标签 c for-loop decrement

我知道打印的第一个字母是 b c d e f。为什么不打印“g”?当 I 为 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;

最佳答案

这是一个逻辑问题,我会尽力说明这一点

<小时/>
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

<小时/>

Note: I didn't debug that in C, but as I said, this is a logic issue...

我认为,当发生这种情况时,尝试使用 IDE 进行调试是个好主意

关于c - 为什么不打印字母final char ('g' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49311129/

相关文章:

c++ - 从用户输入的范围中为不同的类创建不同的随机 x,y 值

CS50 调整大小较小 : strange bmp output

qt - 从qt项目中引用dll文件

java - 增量求值后 i + i++ + i + i++;

c - 将字符串解析为 int 数组 - 收到警告 "makes pointer from integer without a cast"

windows - 从 Windows 命令行 bat 文件循环遍历字符串值

javascript count present i value with previous loop output 值

c - 自增和自减运算符

c - 用于查找数字阶乘的递归函数

c - gcov 为 c 生成空覆盖