gpt4 book ai didi

c - 为什么这不是无限循环?

转载 作者:行者123 更新时间:2023-11-30 19:54:14 25 4
gpt4 key购买 nike

为什么下面的循环不会无限次运行?我预计达到 65535 后,i 应该溢出回零。

#include<stdio.h>
int main()
{
short int i = 0; //(assume short int is 2 bytes)
for(i<=5 && i>=-1; ++i; i>0)
printf("%u\n", i);
return 0;
}

编辑

这个怎么样

#include<stdio.h>
int main()
{
int x=1, y=1;
for(; y; printf("%d %d\n", x, y))
{
y = x++ <= 5;
}
printf("\n");
return 0;
}

它运行良好并打印

2 1
3 1
4 1
5 1
6 1
7 0

是什么导致它终止?

最佳答案

您在这里依赖于签名溢出,这会调用未定义的行为。编译器完全有权将其优化为无限循环,或者不优化,或者做一些完全不同的事情。

关于c - 为什么这不是无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810917/

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