/ *我想看看short int的最大值。我想只使用循环来看它。所以我创建了一个无限循环。问题是我想停止循环以查看每1000个值之后的值但是它只在循环达到1000时停止,因为我已经让它停止使用if条件,然后它永远不会停止。我可以这样做,它会在每1000个值之后停止。程序如下所示* /
#include<stdio.h>
#include<conio.h>
void main()
{
//Short int is declared intentionally
short int d=0;
char i;
//Infinite loop is created intentionally
for(d=0; ;d++)
{
//printing value
printf("\n%d",d);
//stopping a loop when value reaches 1000
if(d==1000)
{
//continuing after pressing a character after 1000
printf("\n press i to continue");
scanf("%d",&i);
continue;
}
}
//see the output
getch();
}
答案 0 :(得分:4)
您正在使用错误的格式说明符来扫描char
值。它调用undefined behavior。你应该改变
scanf("%d",&i);
到
scanf(" %c",&i);
也就是说,要停止每次 1000次迭代,您需要将if(d==1000)
更改为if( (d % 1000) == 0)
。
FWIW,
void main()
至少应该int main(void)
符合标准。<limits.h>
检查范围(如果有)。答案 1 :(得分:0)
您只需按以下方式检查条件
非常重要的一点是你必须与零进行比较,它才能正常工作。
if( (d%1000 == 0)
{
//continuing after pressing a character after 1000
printf("\n press i to continue");
scanf("%c",&i);
continue;
}
希望这有助于
答案 2 :(得分:0)
你需要改变
if(d==1000)
到
if!(d%1000)
答案 3 :(得分:0)
循环将在每1000个值后停止。
#include<stdio.h>
#include<conio.h>
void main()
{
//Short int is declared intentionally
short int d=0;
char i;
//Infinite loop is created intentionally
for(d=0; ;d++)
{
//printing value
printf("\n%d",d);
//stopping a loop when value reaches 1000
if(d%1000 == 0 && d != 0)
{
//continuing after pressing a character after 1000
printf("\n press any key to continue...");
scanf("%c",&i);
continue;
}
}
//see the output
getch();
}
并且您使用了错误的格式说明符(See)。单个字符%c
。
scanf("%d",&i);
此声明应为scanf("%c",&i);
。条件为if(d%1000 == 0 && d != 0)
。