接听时this问题 我尝试运行此代码(用于生成给定范围内的随机数);
#include<stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int max_range, i = 0, rand_num;
bool digit_seen[max_range + 1]; // VLAs For C99 only
srand((unsigned)time(NULL));
printf("Enter your maximum of range: ");
scanf("%d", &max_range);
for (int i = 1; i <= max_range; i++)
digit_seen[i] = false;
for (;;)
{
rand_num = rand() % max_range + 1;
if(rand_num !=3)
if(!digit_seen[rand_num])
{
printf("%d ", rand_num);
digit_seen[rand_num] = true;
i++;
}
if( i == (max_range - 1) )
exit(0);
}
return 0;
}
它在 max_range
为 47
时工作正常,但之后我在调试时遇到此错误
知道为什么我会收到这个吗?
最佳答案
您正在基于 max_range
的未初始化值创建一个数组:
bool digit_seen[max_range + 1]; // VLAs For C99 only
它可以有任何可以想象的大小。为什么它对某些值有效而对另一些值无效,这是未定义行为的魔力的一部分;任何事情都可能发生。
关于c - 调试时出现错误 "Arithmetic exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18881224/