c - 这段代码的输出是什么?您能解释一下逐步的进展吗?

标签 c loops for-loop char

我尝试了这段代码并得到了下面的输出。但我不明白它是怎么来的。 这段代码涉及什么逻辑?你能解释一下吗?
另外,当++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/

相关文章:

arrays - 在运行时填充长度设置的 slice 时,我是否绝对需要两个循环,一个用于确定长度,一个用于填充?

java - 多个嵌套循环的数学等价物

c - 如何针对每个宏值执行不同的操作?

c++ - 打印列表中的元素

java - 如何制作 Java Canvas 游戏循环

python - 使用 for 循环获取 ValueError : Length of values does not match length of index 的格式

postgresql - 是否可以在 postgresql 中使用 for 循环(功能)

c - 使用 printf 中的 scanf 函数获取值

c - 从 C 语言的文件中一次读取一个字符串

c - while 循环时间复杂度 O(logn)