我尝试了这段代码并得到了下面的输出。但我不明白它是怎么来的。
这段代码涉及什么逻辑?你能解释一下吗?
另外,当++i 被 i++ 替换时,它会给出不同的输出?
int main()
{
char i= 0;
for(i<=5 && i>=-1;++i;i>0)
printf("%d\n",i);
printf("\n");
return 0;
}
输出:
1 2 3 .... 126 127 -128 -127 .... 2 1.
最佳答案
这是因为你写的for循环
for(i<=5 && i>=-1;++i;i>0)
for循环中的第一个选项执行一次。它不检查条件是否为真,也不控制循环执行。即使表达式的计算结果为 0,循环也会开始执行。 第二部分在每次循环开始时执行,它是循环中断条件。也就是说,如果该表达式的结果为 0,则它会中断。
第三部分每次都会执行,不会影响循环执行。
现在让我们分析您的代码。
i 在进入循环之前被初始化为 0。
for 循环中的初始化程序执行条件检查, i<=5 && i>=-1
但不会改变 i 的值。
条件部分对变量 i 进行增量操作,每次进入循环时都会发生这种情况。所以该值从 0,1,2,..127,-128,-127...-1 (因为它是 signed char ,范围从 -128 到 127),然后达到 0 ,这意味着错误。当它的值为 0 时,for 循环就会中断。因此你得到的输出。
第三部分又是一个条件,它不会更新值。
您可能想检查循环的语法,以及您期望的输出是什么。
关于c - 这段代码的输出是什么?您能解释一下逐步的进展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59450460/