在 c++ 的结构中显示垃圾值


#include<iostream>
using namespace std;
struct student
{
char name [50];
int roll;
float marks;
}s = {"Karthik",1,95.3};
int main()
{
struct student s;
cout<<"nDisplaying Information : "<<endl;
cout<<"Name  : "<<s.name<<endl;
cout<<"Roll  : "<<s.roll<<endl;
cout<<"Marks : "<<s.marks<<endl;
return 0;
} 

输出:

Displaying Information : 
Name  : 
Roll  : 21939
Marks : 2.39768e-36

在Visual-Studio-Code(在linux os上(编译,我应该怎么做才能获得正确的输出。

因为您使用的是这个未初始化的struct

struct student s; 

这隐藏了全球s.

相反,在main中初始化它:

student s = {"Karthik",1,95.3};

您声明的两个对象类型为student

第一个在全局命名空间中声明

struct student
{
char name [50];
int roll;
float marks;
}s = {"Karthik",1,95.3};

并且被初始化,第二个在函数的块范围内 main

struct student s;

此外,这还没有初始化。

在块作用域中声明的对象隐藏了在全局命名空间中声明的同名对象。

删除本地声明或使用限定名指定在全局命名空间中声明的对象,例如

cout<<"nDisplaying Information : "<<endl;
cout<<"Name  : "<< ::s.name<<endl;
cout<<"Roll  : "<< ::s.roll<<endl;
cout<<"Marks : "<< ::s.marks<<endl;

相关内容

  • 没有找到相关文章

最新更新