gpt4 book ai didi

C - 为什么将语句放入 for 循环 'increment' 部分在第一次迭代时不起作用?

转载 作者:太空狗 更新时间:2023-10-29 16:05:54 25 4
gpt4 key购买 nike

这是我希望看到的代码

7、3、5、1、9

作为输出但它打印

0, 7, 3, 5, 1

#include <stdio.h>
#define LEN 5

int main(int argc, char const *argv[])
{
int arr[LEN];
int index;
arr[0] = 7;
arr[1] = 3;
arr[2] = 5;
arr[3] = 1;
arr[4] = 9;

int ITM;
for(int IDX = 0; IDX < sizeof(arr) / sizeof(int); ITM = arr[IDX++]){
printf("%d, ", ITM);
}

return 0;
}

这段代码有什么问题?

顺便说一句,我知道我可以将“ITM = arr[IDX++]”移动到循环体中!

最佳答案

由于您读取了unitialised 变量ITM,您的程序的行为未定义for 的第一次迭代中循环。

ITM直到 ITM = arr[IDX++] 才设置为任何内容被评估,直到程序控制结束时才会发生 }for循环。

像这样编写华而不实的代码偶尔会有用,但您需要注意其中的陷阱。

关于C - 为什么将语句放入 for 循环 'increment' 部分在第一次迭代时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868538/

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