首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组已损坏

数组已损坏
EN

Stack Overflow用户
提问于 2021-04-20 04:40:03
回答 2查看 57关注 0票数 0

当我运行这个程序的时候,我想要一个0和1s的列表,但是我得到了一个0,1,和一堆正负随机数的列表。我做错了什么?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int randomInt(maxNum) {
  return (rand() % maxNum - 1) + 1;
}

int main(void) {
  srand(time(NULL));
  int board[100];
  int index = 1;
  for (int i = 0; i < 20; i ++) {
    board[randomInt(100)] = 1;
  }
  for (int i = 0; i < 100; i ++) {
    printf("%i\n", board[index]);
    index ++;
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-20 04:43:04

您没有初始化board,因此它在每个单元格中都有不确定的值,但是分配给1的值是20 (或更少)。使用零显式初始化它:

代码语言:javascript
复制
 int board[100] = {0};

以避免将堆栈上的随机垃圾作为初始值处理。我还建议打开编译器警告(它应该识别初始化失败,尽管伪随机部分初始化在本例中可能会欺骗它)。

票数 4
EN

Stack Overflow用户

发布于 2021-04-23 17:57:44

C算子优先

-运算符比%运算符具有更高的优先级,因此将在模块操作之前执行减法。因此,对randomInt()的调用返回范围为1.99的值,这是可以的。

在启用警告的情况下,通过编译器运行已发布的代码:

代码语言:javascript
复制
gcc -ggdb3 -Wall -Wextra -Wconversion -pedantic -std=gnu11 -c "untitled2.c" -o "untitled2.o" 

在以下方面的成果:

代码语言:javascript
复制
untitled2.c: In function ‘randomInt’:

untitled2.c:5:5: warning: type of ‘maxNum’ defaults to ‘int’ [-Wimplicit-int]
    5 | int randomInt(maxNum) {
      |     ^~~~~~~~~

untitled2.c: In function ‘main’:

untitled2.c:10:9: warning: conversion from ‘time_t’ {aka ‘long int’} to ‘unsigned int’ may change value [-Wconversion]
   10 |   srand(time(NULL));
      |         ^~~~~~~~~~

编译时,始终启用警告,然后修复这些警告。

正如其他人所评论的,将board[]初始化为一个已知的值,如0

您可以通过以下方式更正randomInt()的签名:

代码语言:javascript
复制
int randomInt( int maxNum) {

您可以通过以下方式消除有关conversion to unsigned的警告:

代码语言:javascript
复制
srand( (unsigned) time(NULL));

关于:

代码语言:javascript
复制
for (int i = 0; i < 100; i ++) {
    printf("%i\n", board[index]);
    index ++;
}

这可以简化,这样它就不会通过以下方式引入另一个变量:

代码语言:javascript
复制
for ( index = 0; index < 100; index++ ) 
{
    printf( "%i\n", board[index] );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67172547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档