我用dev编写了一个简单的代码,但它没有返回任何东西。但是代码块的答案显示。问题是什么?
#include <stdio.h>
int main() {
int x,y,z;
scanf("%d%d",&x,&y);
while(z!=0){
z=x%y;
printf("%d",z);
}
return 0;
}
答案 0 :(得分:8)
我可以看到两个问题:
1. Value to z is un-assigned. So garbage.
2. Value of z will not change, so it's infinite loop.
答案 1 :(得分:7)
它调用 undefined behavior ,因为z
未初始化使用。
while( z!= 0)
^
|
z is uninitialized
您可能会得到任何预期或意外结果。程序也可能崩溃。在不同的编译器上,您可能会得到不同的结果,这就是这种情况。
答案 2 :(得分:1)
您无法看到输出,因为一旦程序退出,它就会关闭终端/输出窗口。
在code :: block中,他们运行一个脚本来保存输出窗口,直到您按下enter
。
在返回之前,最后使用getch()
调用可以产生相同的效果。这将等待您的输入并为您提供查看结果的范围。
此外,您的计划有几个问题,其他答案指出。相应地修复它们。
答案 3 :(得分:1)
在您的代码中,您被分配了z但未初始化z并且您正在检查while(z!=0)
,因此您的代码不返回值,将z分配给任何值,例如来自scanf
。