C编程 - 整数值打印不正确

时间:2014-10-28 12:27:53

标签: c printf

我使用的是Borland C v3.1(DOS版)

这是我的代码

#include<stdio.h>
#include<conio.h>

void WTF()
{
    int array[15],i;
    int WTF_NUMBER=12345;

    for(i=0;i<16;i++) array[i]=0;

    printf("%d",WTF_NUMBER);
}

void main()
{
    clrscr();
    WTF();
    getch();
}

我应该得到12345作为输出,但我得到0而不是。帮助

9 个答案:

答案 0 :(得分:3)

你定义了数组&#34;数组&#34;因为只有15个元素。

int array[15],i;

但是在定义下面的循环中,您尝试初始化16个元素,这些元素是包含索引0到15的元素。

for(i=0;i<16;i++) array[i]=0;

所以这个循环覆盖,变量WTF_NUMBER占用的内存是数组[15]占用与WTF_NUMBER相同的内存。

一样写循环
for (i=0; i < 15; i++ ) array[i]=0;

或者你可以简单地将数组定义为

int array[15] = { 0 };

在这种情况下,数组的所有元素都将被初始化为0。

将数组初始化为零的另一种方法是使用标准函数memset

memset( array, 0, 15 * sizeof( int ) );

memset( array, 0, sizeof( array ) );

答案 1 :(得分:1)

您的代码不正确。

而不是

for(i=0;i<16;i++) array[i]=0;

你应该

for(i=0;i<15;i++) array[i]=0;

因为你的数组只有15个元素。

答案 2 :(得分:0)

for循环中超出了数组边界。因此将其设为for(i=0;i<15;i++)

答案 3 :(得分:0)

array可以容纳15个元素0-14应该是你的数组索引。

访问array[15]超出范围。

答案 4 :(得分:0)

你的外观大小错误,数组有15个元素,循环循环16次,它会覆盖数组的末尾并进入计数器。

答案 5 :(得分:0)

由于数组大小无效,程序将崩溃;在for循环中将其更改为15,您将获得所需的输出。

答案 6 :(得分:0)

而不是使用for循环
尝试像这样初始化你的数组

int array[15] = {0};

我想你会得到你想要的输出。

答案 7 :(得分:0)

您可以通过明智地使用标准库来解决几个问题。您根本不需要在显式循环中执行此操作:

int array[15];
memset (array, 0 , sizeof (array));

答案 8 :(得分:0)

由于for循环中的数组大小错误,WHAT-Number的值被覆盖。