当我运行此代码时程序会冻结,为什么?
main()
{
int co;
co=0;
while (co<10) {
co=co+1;
if (co==3)
printf("The number is now three.");
if (co==7)
printf("The number is now seven.");
else
printf(co);
}
}
我正在使用mingw GCC进行编译。
答案 0 :(得分:8)
你不能像那样打印co
:
你需要这样做:
printf("%d",co);
printf
作为第一个参数,一个带格式说明符的字符串。后者(可选)参数是参数本身。
http://www.cplusplus.com/reference/clibrary/cstdio/printf/
这是一个更清洁的代码版本:
int main(){
int co = 0;
while (co < 10) {
co = co + 1;
if (co == 3)
printf("The number is now three.");
if (co == 7)
printf("The number is now seven.");
else
printf("%d\n",co);
}
return 0;
}
答案 1 :(得分:4)
你没有打电话给printf(co)
。 printf()
期望一个共振峰字符串+一些可选参数:
printf("%d\n", co);
(另外,您应该在1989年之后编写的每个C程序中明确指定int
作为main()
的返回类型,并在return
内提供main
值<) / p>
答案 2 :(得分:3)
我建议使用警告启用进行编译。然后你会直接看到你做错了什么。
答案 3 :(得分:0)
正如其他答案所述,您需要使用格式字符串(百分比)来打印它。对于整数,您可以在格式字符串中使用%i或%d。
printf("%d", co);
如果你想打印更复杂的东西,你可以这样做。
int a = 5;
int b = 2;
printf("%d+%d=%d", a, b, (a+b));
printf函数接受可变数量的参数,因此您可以将尽可能多的字符串,整数或其他内容传递给函数调用。
另外,我建议改变co = co + 1;在你的代码中。
++co;
简单地说,这会增加co变量。您也可以使用co ++,但这取决于您的个人偏好。
答案 4 :(得分:0)
我只想添加一些内容并向您展示编写代码的另一种方式:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int co;
for (co = 0; co < 10; co++) {
if (co == 3)
printf("The number is now three.\n");
else if (co == 7)
printf("The number is now seven.\n");
else
printf("%d\n", co);
}
return EXIT_SUCCESS;
}
co </ em>的初始值,条件和修改它的指令(增量)的方式使其非常适合使用 for 语句,如你可以整齐地将这三个部分放在一行中。
此外,我认为您希望if (co == 7)
为else if (co == 7)
,因此当您到达数字3时,您不会打印“数字现在为3。 “以及3号。
显然,我知道已经回答的问题的主要答案是 printf 将 co </ em>的值视为开头的地址字符串,因为 printf 的第一个参数是格式字符串。