C 程序立即以退出代码0结束-但它不应该';没有投入,我无法到达那里
构建成功。如果我打开“输出”窗口,它将显示: 程序以退出代码结束:0 但是我的程序是这样的,如果没有先接受用户输入,做一些事情,然后再接受另一个用户输入,这是不可能的,所有这些都在C 程序立即以退出代码0结束-但它不应该';没有投入,我无法到达那里,c,C,构建成功。如果我打开“输出”窗口,它将显示: 程序以退出代码结束:0 但是我的程序是这样的,如果没有先接受用户输入,做一些事情,然后再接受另一个用户输入,这是不可能的,所有这些都在intmain()中 int main()所做的第一件事是循环获取p的输入,直到输入是所需的两个选项之一。因此,它不可能立即退出—它初始化p=0,并且在p为1或2之前不会退出循环 是否存在一些隐藏的错误,使得构建能够在没有它的情况下成功。。成功 int main(){ //vars while (TRU
intmain()
中
int main()
所做的第一件事是循环获取p
的输入,直到输入是所需的两个选项之一。因此,它不可能立即退出—它初始化p=0
,并且在p
为1或2之前不会退出循环
是否存在一些隐藏的错误,使得构建能够在没有它的情况下成功。。成功
int main(){
//vars
while (TRUE){
//play computer or human?
while (!(p == 1 || p == 2)) {
printf("Single player or two player? (1/2): ");
scanf("%d", &p);
}
if (p==1) {
//play computer
}
else {
//snip
}
printf("%s won the game! Play again?", winner);
scanf("%s", playagain);
if (strncmp(playagain,"no",2)==0){
break;
}
}
return 0;
}
打印出大写字母TRUE
的定义。我见过一些雄心勃勃但缺乏经验的人用它做奇怪的事情。您甚至可能没有进入主循环,而循环
printf("TRUE is %d\n",TRUE);
如果这不是零,那么您的问题在别处。代码在哪里?我们能看一下吗?有点长,我想我说的就足够了。我要补充一点。请输入足够的代码,使之成为一个小型的、自包含的、可编译的示例(SSCCE)程序,演示这个问题。这将让我们帮助您避免猜测,并且您可能会在提出SSCCE的过程中意识到问题所在。只需使用调试器运行它,以确保您的假设是正确的。问题最初也用xCode标记。您是在xCode的main.m中运行它,还是在xCode项目或纯c(编辑器+gcc)中作为添加的c文件运行?TRUE是typedef enum bool{TRUE,FALSE}bool代码>。这就是问题所在。。它实际上不是一个真正的布尔值,所以它对的计算结果不是1,而。。。我想当我进入循环时,我已经忘记了我自己的定义是真的。我在Python方面有更多的经验,其中包括布尔类型,while true非常有意义。while(true)
在C中也有意义,只要true
有一个合理的值(其中合理的意思是它有值1)。然而,我认为大多数C程序员要么使用stdbool.h
中的布尔类型(一个C99加法),要么只使用0或1。我认为今天我将避免创建自己的类型:“代码> Boo.<代码>,因为它将运行代码,使用代码< > STDBOOL .H/COD>或如果/在C++上下文中使用时。可能只是使用enum{FALSE,TRUE}代码>