c - 下面程序的输出是什么?

标签 c loops

While运行这个问题时会终止循环?

#include<stdio.h>
#include<conio.h>
void main()
{
  int n=12,res=1;
  clrscr();
  while(n>3)
  {
    n+=3;
    res*=3;
  }
  printf("%d",n*res);
  getch();
}

上面的结果是3595。但是我不明白while循环的过程。当它终止它的循环时?

最佳答案

您的代码的行为是未定义,因为您最终将溢出有符号整型。

因此,输出可以是任何内容。

(在您的情况下,似乎 n 环绕 为负数,因此 n > 3 条件不再 true。但是不要依赖这种行为:例如,某些架构会clamp n。)

关于c - 下面程序的输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619985/

相关文章:

c - 看不见的内存泄漏? - malloc 和 strcpy

c - [错误]:expected '(' before 'hours'

c++ - 让编译器在调用函数之前忽略设置参数寄存器

bash - 使用 fd 嵌套 while 读取循环

C++ 如何遍历结构列表并访问它们的属性

c - 为什么 strtok(line, "\n") **不** 用于去除 fgets() 留下的换行符

c - 堆栈弹出/推送段错误错误的相同数字

loops - Jmeter : While Controller : Loop not getting executed for second itreration

javascript - 对目录中的所有 .ai 文件运行脚本

javascript 如果将 .shift() 与数组的最后一个值进行比较不起作用