gpt4 book ai didi

c - 我不明白这个程序是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:34 25 4
gpt4 key购买 nike

在下面的程序中

#include<stdio.h>   
int main()
{
char i=0;
for(i<=5 && i>=-1;++i;i>0)
printf("%d\t",i);
return 0;
}

'i' 从 1 打印到 127,然后从 -128 打印到 -1。

为什么会这样?

最佳答案

这一定是我一生中见过的最畸形的 for 循环。 for循环的格式如下

for ( initalization; condition; update )

for 的开头循环,initialization发生。这通常类似于 i = 0 .在每个循环的顶部,condition (通常类似于 i < 5 )被评估以查看循环是否应该继续,如果循环继续,update被执行(同样,通常类似于 ++i ),然后循环再次执行。

这里发生了什么,循环正在使用 ++i作为条件,所以它只会在 ++i 时终止评估为 0值,所以你从 1 开始并递增直到 char i128 溢出至 -127 , 然后继续递增直到达到 -1 ,此时++i评估为 0循环终止

编辑

所以根据你的代码,i<=5 && i>=-1在循环的第一次迭代的最开始执行(这完全没有完成任何事情),然后是 ++i被评估为 bool 状态(它是 0 开始,并且使用预增量,评估是 1 因此,不是 0 所以 bool 值通过),然后是 updatei>0执行,这又什么都不做。

EDIT2

如果您的问题真的是关于为什么会这样 1,2....128,-127,-126....-1然后 Joachim 对这种行为提供了很好的解释

关于c - 我不明白这个程序是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137881/

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