gpt4 book ai didi

c - 这条语句背后的逻辑是什么: for (--index; index >= 0; --index)?

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:27 29 4
gpt4 key购买 nike

我在一本C语言的书上找到了这个例子。此代码转换输入数字基数并将其存储在数组中。

#include <stdio.h>

int main(void)
{
const char base_digits[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int converted_number[64];
long int number_to_convert;
int next_digit, base, index = 0;

printf("type a number to be converted: \n");
scanf("%ld", &number_to_convert);

printf("Base\n");
scanf("%i", &base);

do
{
converted_number[index] = number_to_convert % base;
++index;
number_to_convert = number_to_convert / base;
}
while (number_to_convert != 0);

// now display the number
printf("converted number = :");

for (--index; index >= 0; --index )
{
next_digit = converted_number[index];
printf("%c", base_digits[next_digit]);
}

printf("\n");
return 0;
}

我无法理解最后一个 for 循环。它应该有助于反转数组,但我不明白怎么做!

这行是什么意思:for (--index; index >= 0; --index)

最佳答案

回想一下,for header 包含三个部分:

  • 在循环之前执行一次的声明/初始化部分,
  • 在每次迭代之前执行的结束条件检查器,以及
  • 将循环推进到下一次迭代的部分

通常,声明/初始化部分会设置一个新的循环变量。但是,不需要这样做。特别是,当多个循环共享同一个循环变量时,初始化部分会调整现有值或完全缺失。

这正是您的情况。 do/while 循环将 index 推进到数组末尾之后的一个。如果您需要从 converted_number 的后面开始处理,则需要在进入循环之前递减 index,然后在每次迭代时递减它。

请注意,另一种可能性是使用 while 循环,并在 index 上进行预递减:

while (index > 0) {
next_digit = converted_number[--index];
printf("%c", base_digits[next_digit]);
}

关于c - 这条语句背后的逻辑是什么: for (--index; index >= 0; --index)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868312/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com