0 的数组以 -85993460 而不是 0 的形式出现

array of 0's coming out as -85993460 instead of 0's

本文关键字:数组 -85993460      更新时间:2023-10-16

我有这个代码从vector.txt文件中打印出矢量(1 2 3),但每当我运行该代码将矢量转换为matrix时,填充matrix0就会显示为-85993460。请帮助

#include<iostream>
#include<conio.h>
#include <stdio.h>
using namespace std;
void main()
{
    cout << "Loading vector.txt" << endl;
    FILE *file = fopen("vector.txt", "r");
    int vector[3];
    int b = 0;
    do{
        fscanf(file, "%i", &vector[b]);
        b++;
    }while(feof(file) == 0);

    //clear the screen.
    fclose(file);
    cout << "Loading matrix" << endl;
    int a[3][3],i,j;
    for(int i=0;i<3;i++)
    {
        for(b=0; b<3;b++);
        a[0][i] = vector[i];
    }
    cout << " Vector rotation" << endl;

//Display the original matrix
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
    {
        cout<<a[i][j]<<" ";
    }
        cout<<endl;
    }
        cout<<"Transpose of above matrix is: "<<endl;
//Display the transpose matrix
    for(j=0;j<3;j++)
    {
        for(i=0;i<3;i++)
        {
        cout<<a[i][j]<<" ";
        }
    cout<<endl;
    }
//get character
    getch();
}

使用={} 0初始化矩阵:

int a[3][3] = {},i,j;

您没有初始化矩阵。for循环for(b=0; b<3;b++);什么也不做,它下面的行只执行一次。如果您想执行该循环中的下一行或任何内容,请删除该for循环末尾的分号。

因为矩阵在循环中没有初始化,所以您正在读取垃圾值-85993460就是创建矩阵时堆栈上的内容。

我猜您有一个拼写错误,您未初始化的值更有可能显示为-858993460,这是十六进制0xCCCCCCCC,一个在调试模式下编译时用于填充未初始化内存的常见值。