首页 新闻 会员 周边

调试运行没有问题,直接运行时不时会出错

0
悬赏园豆:50 [已解决问题] 解决于 2022-12-24 15:41

环境:Visual Studio 2022
语言:C

问题代码如下:

#include <stdio.h>

int main() {
	for (int m = 22; m > 0; m--) {  //输出tanx函数x轴上半部分的函数 
		printf("*");  //函数的 y 轴 

		for (int i = 1; i <= m * m; i = 2 * i)  //用2的指数增长来模拟tanx的增长 
			printf(" ");

		printf("*");

		for (int k = 0; k < 38; k++)
			printf(" ");

		for (int i = 1; i <= m * m; i = i * 2)
			printf(" ");  //用于间隔每个* 

		printf("*\n");
	}

	printf("*******************************************************************************************************\n");  //函数的x轴 

	for (int m = 1; m <= 22; m++) {  //输出tanx函数x轴下半部分的函数 
		printf("*");  //函数的 y 轴 

		for (int i = 0; i < 20; i++)
			printf(" ");

		for (int i = 256; i >= m * m; i = i / 2)
			printf("  ");

		printf("*");

		for (int k = 0; k < 48; k++)
			printf(" ");

		for (int i = 256; i >= m * m; i = i / 2)
			printf(" ");  //用于间隔每个* 

		printf("*\n");
	}
}

调试运行正常结果如下:

直接运行异常结果如下:

有人知道为什么会出现这种情况吗?

C
道成空的主页 道成空 | 初学一级 | 园豆:161
提问于:2022-12-20 12:05
< >
分享
最佳答案
0

应该是屏幕缓冲区溢出后出现的怪问题。

道成空 | 初学一级 |园豆:161 | 2022-12-20 23:11
其他回答(1)
0

屏幕缓冲区溢出

Wx120 | 园豆:244 (菜鸟二级) | 2023-01-30 09:34

感谢!

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 10:24

但是请问为什么调试运行和直接运行显示结果不一样?直接运行的话经常出问题,但是调试运行就不会出问题。

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 10:29

@道成空: 你自己看看,在一个main函数定位两次int m,这样合理吗?建议把m变量定义在函数开头的位置,或全局定义,编译器没给你报错?改了再试试吧

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-01 10:34

@道成空: 还有其他变量,这样不合理啊

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-01 10:36

@Wx120: m在for里面定义的话,那它的作用域就是for循环,循环结束就销毁了,所以这样写是没问题的,我刚刚试过,在for循环外定义m也是这个结果。

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 10:39

@Wx120: 我的语法是对的,没有问题

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 10:43

@道成空: 那你在main函数里面加上一个运行一次的条件,或者在最后一个for后面加一个while(1),有可能它默认循环main了

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-01 10:50

@Wx120: 还是和最后一张图一样,如果它异常运行就不会结束程序,就会卡在那,这个程序我用java跑一点问题没有,可能是编译器问题?

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 11:09

@道成空: 有可能,看效果图很明显x轴打了两次,建议还是规范点,该有的循环都加上,该有的格式都规范下,方便大家看代码

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-01 11:11

@Wx120: 行,我再改改看

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 11:13

@道成空: 我下班回去也弄下来试试,我用vc++6.0试试

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-01 11:13

@Wx120: 嗯,感谢!

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-01 11:23

@道成空: 我试过了,把这串代码直接运行,我这边的编译器会报错,所以我把你在for循环定义的变量放到了开头,然后运行是正常的,可以实现tan函数

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-02 15:31

@道成空:

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-02 15:37

@Wx120: 直接运行和调试运行都是对的吗?

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-02 22:19

@Wx120: 如果这样的话,那应该是编译器的问题。总之,十分感谢!

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-02 22:21

@道成空: 是的,都是对的

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-02 22:24

@Wx120: VS的问题实锤,感谢大佬!

支持(0) 反对(0) 道成空 | 园豆:161 (初学一级) | 2023-02-02 22:26

@道成空: 共同学习,相互交流罢了

支持(0) 反对(0) Wx120 | 园豆:244 (菜鸟二级) | 2023-02-02 22:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册