在定义结构体时,结构体中的数据只能定义而不能做其他动作如运算
#include<bits/stdc++.h>
using namespace std;
typedef struct{
char name[10];
float Num1;
float Num2;
float Num3;
float Num4=Num1+Num2+Num3; //这样定义结构体中的数据是完全错误的
//此处因为错误定义,编译报warning
}Message;
int main(){
Message M[10];
for(int i=0;i<3;i++){
cin>>M[i].name>>M[i].Num1>>M[i].Num2>>M[i].Num3;
}
for(int i=0;i<3;i++){
cout<<M[i].Num4<<endl;
}
}
输入及输出结果
AA 11 12 13
BB 21 22 23
CC 31 32 33
1.95195e-038
1.19434e-038
2.91503e+032
--------------------------------
Process exited with return value 0
Press any key to continue . . .
可以看到M[i].Num4的值是不存在的,计算机只好随机给出
下面是正确代码
#include<bits/stdc++.h>
using namespace std;
typedef struct{
char name[10];
float Num1;
float Num2;
float Num3;
float Num4;//不可以在这里赋值或运算
}Message;
int main(){
Message M[10];
for(int i=0;i<3;i++){
cin>>M[i].name>>M[i].Num1>>M[i].Num2>>M[i].Num3;
M[i].Num4=M[i].Num1+M[i].Num2+M[i].Num3;//在这里赋值给Num4
}
for(int i=0;i<3;i++){
cout<<M[i].Num4<<endl;
}
}
输入及输出结果
AA 11 12 13
BB 21 22 23
CC 31 32 33
36
66
96
--------------------------------
Process exited with return value 0
Press any key to continue . . .