两个几乎完全相同的程序,但输出不同

ProNOOB

嗨,我制作了一个非常简单的程序,该程序应该可以运行,但是不能:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int main(int argc, char *argv[]) {
    int usedNumbers[256];
    memset(usedNumbers,0,256);

    srand(time(NULL));

    for(int i=0; i<256; ++i){
        while(1){
            int r = rand()%256;
            if( !usedNumbers[r] ){
                usedNumbers[r] = 1;
                break;
            }
            printf("Test: %03d -> %03d\n", i, r);
        }
    }

    return 0;
}

该程序的想法是在屏幕上以随机顺序打印从0到255的数字,但是该程序在32台计算机上的第84个数字和64位计算机上的第144个数字上停止。如果我只移动“ int usedNumbers [256];” 上面的功能是这样的:

#include <string.h>

int usedNumbers[256];

int main(int argc, char *argv[]) {

程序按预期工作。为什么会这样呢?我正在使用最新的GNU / GCC编译器和C11标准。

鲁迪·维特胡斯(Rudy Velthuis)

usedNumbers 内部 main是一个局部变量和这些都不是零初始化(即,它们可以含有垃圾)。由于您仅使用memset(..., 256),因此只有前256个字节会被初始化为零,而其余的(例如,数组的一半或四分之三-或更多,取决于的大小int)不会被初始化

usedNumbers 外面 main是一个全局变量,但是,这些是完全零初始化,即使没有memset因此,在那里,您确实有一个没有垃圾的空数组,这就是为什么该数组能按预期工作的原因。

这样:

    memset(usedNumbers, 0, sizeof(usedNumbers));

并且两个版本都应产生相同的预期结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个几乎完全相同的程序,但输出不同

来自分类Dev

Javascript OOP-为什么这两个几乎完全相同的语句给出不同的输出?

来自分类Dev

接口的两个完全相同的实现给出不同的.hashCode()结果

来自分类Dev

在两个不同的 @RestController 类中有两个完全相同的 @ExceptionHandler 是不好的做法吗?

来自分类Dev

序言两个列表完全相同

来自分类Dev

如何确定两个网页是否完全相同

来自分类Dev

合并 2 个不同的 git 存储库,内容几乎完全相同

来自分类Dev

为什么 new Date(dateString) 在具有完全相同输入的不同设备上返回两个不同的日期?

来自分类Dev

两个应用几乎完全相同,只有一个在我的数据库中注册信息。为什么?

来自分类Dev

两个应用几乎完全相同,只有一个在我的数据库中注册信息。为什么?

来自分类Dev

两个几乎完全相同的列表:如果右侧的列具有特定值,则将其复制到左侧(excel)

来自分类Dev

使用两个不同的排序条件对对象数组进行排序的对象不完全相同

来自分类Dev

在 GPU 上运行 Tensorflow 脚本时,两个完全相同的系统具有非常不同的性能

来自分类Dev

两个完全相同的USB闪存驱动器(棒)不完全相同

来自分类Dev

两个完全相同的关系数据库完全同步的设计模式

来自分类Dev

2个组件几乎完全相同。唯一的区别是每个组件都有不同的 GET 请求。合并它们?

来自分类Dev

两个完全相同的应用程序,但是一个可以工作,另一个不起作用

来自分类Dev

我怎么知道这两个Scala版本是否完全相同?

来自分类Dev

熊猫:我该如何迭代两个格式完全相同的数据框?

来自分类Dev

这两个python导入方法完全相同吗?

来自分类Dev

以完全相同的顺序将值添加到两个列表

来自分类Dev

查找在Python中具有完全相同值的两个嵌套元素的列表元素

来自分类Dev

比较两个表是否具有完全相同的内容的最快方法

来自分类Dev

我怎么知道这两个Scala版本是否完全相同?

来自分类Dev

完全相同的数据库上有两个Wordpress安装?

来自分类Dev

使用rsync确保两个目录具有完全相同的文件

来自分类Dev

两个 AP 的行为可以完全相同,以解决 wifi 漫游连接问题吗?

来自分类Dev

sqlite追加两个数据库具有完全相同的架构的两个表

来自分类Dev

两个相同的剃刀视图的行为完全不同

Related 相关文章

  1. 1

    两个几乎完全相同的程序,但输出不同

  2. 2

    Javascript OOP-为什么这两个几乎完全相同的语句给出不同的输出?

  3. 3

    接口的两个完全相同的实现给出不同的.hashCode()结果

  4. 4

    在两个不同的 @RestController 类中有两个完全相同的 @ExceptionHandler 是不好的做法吗?

  5. 5

    序言两个列表完全相同

  6. 6

    如何确定两个网页是否完全相同

  7. 7

    合并 2 个不同的 git 存储库,内容几乎完全相同

  8. 8

    为什么 new Date(dateString) 在具有完全相同输入的不同设备上返回两个不同的日期?

  9. 9

    两个应用几乎完全相同,只有一个在我的数据库中注册信息。为什么?

  10. 10

    两个应用几乎完全相同,只有一个在我的数据库中注册信息。为什么?

  11. 11

    两个几乎完全相同的列表:如果右侧的列具有特定值,则将其复制到左侧(excel)

  12. 12

    使用两个不同的排序条件对对象数组进行排序的对象不完全相同

  13. 13

    在 GPU 上运行 Tensorflow 脚本时,两个完全相同的系统具有非常不同的性能

  14. 14

    两个完全相同的USB闪存驱动器(棒)不完全相同

  15. 15

    两个完全相同的关系数据库完全同步的设计模式

  16. 16

    2个组件几乎完全相同。唯一的区别是每个组件都有不同的 GET 请求。合并它们?

  17. 17

    两个完全相同的应用程序,但是一个可以工作,另一个不起作用

  18. 18

    我怎么知道这两个Scala版本是否完全相同?

  19. 19

    熊猫:我该如何迭代两个格式完全相同的数据框?

  20. 20

    这两个python导入方法完全相同吗?

  21. 21

    以完全相同的顺序将值添加到两个列表

  22. 22

    查找在Python中具有完全相同值的两个嵌套元素的列表元素

  23. 23

    比较两个表是否具有完全相同的内容的最快方法

  24. 24

    我怎么知道这两个Scala版本是否完全相同?

  25. 25

    完全相同的数据库上有两个Wordpress安装?

  26. 26

    使用rsync确保两个目录具有完全相同的文件

  27. 27

    两个 AP 的行为可以完全相同,以解决 wifi 漫游连接问题吗?

  28. 28

    sqlite追加两个数据库具有完全相同的架构的两个表

  29. 29

    两个相同的剃刀视图的行为完全不同

热门标签

归档