gpt4 book ai didi

c - 在 for 循环中交换语句

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:45 24 4
gpt4 key购买 nike

这是C中的代码行。
这里循环的条件是++i。
那么编译器如何决定考虑哪个条件,因为这里有其他两个条件出现?

char i=0;
for(i<=5&&i>-1;++i;i>0)
printf("%d",i);

输出

1234..127-128-127....-2-1

最佳答案

for 语句的工作原理如下:

for (X; Y; Z)
{
...
}

翻译成

X;
while (Y)
{
...
Z;
}

因此您的代码更改自:

char i=0;
for(i<=5&&i>-1;++i;i>0)
printf("%d",i);

到:

char i = 0;
i<=5 && i>-1; // X
while (++i) // Y
{
printf("%d", i);
i > 0; // Z
}

如您所见,标有XZ 的行完全没有用。因此:

char i = 0;
while (++i)
printf("%d", i);

这意味着它将打印从 1 到 ++i 的结果为零的任何时候。

如果编译器中的 char 是有符号的,那么行为将留给实现,即使它很可能会溢出为负值并逐渐变为零。

如果 char 是正数,这将打印正值直到它溢出回 0。

关于c - 在 for 循环中交换语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11690866/

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