结构体成员赋值
#include <stdio.h>
#include<string.h>//使用了strcpy命令
struct Student {
char name[32]; //姓名
int age; //年龄
float score; //成绩
};
int main(){
struct Student student1;
struct Student student2;
strcpy(student1.name,"张三");
student1.age = 19;
student1.score = 90.5;
strcpy(student2.name,"李四");
student2.age = 18;
student2.score = 95.5;
printf("姓名\t年龄\t分数\n");
printf("%s\t%d\t%.1f\n",student1.name,student1.age,student1.score);
printf("%s\t%d\t%.1f\n",student2.name,student2.age,student2.score);
}
输出结果:
可以通过student2 = student1;来给student2直接赋student1的数值而不用单独赋值student2
也可以直接赋值
struct Student student1 = {"张三",19,90.5};
struct Student student2 = {"李四",18,95.5};
##上面的都是整体赋值,也可以部分赋值:
也可以像下面部分初始化。
struct Point3D{
int x;
int y;
int z;
};
struct Point3D p = {.x=10,.z=20};
##x和z的位置可以呼唤,没有位置限定,但是需要在前面加上.
##也可以定义结构体并同时定义结构体变量和赋值
struct Student {
char name[32]; //姓名
int age; //年龄
float score; //成绩
};student1,student2;
或者
struct Student{
char name[32]; //姓名
int age; //年龄
float score; //成绩
};student1 = {“Chen”, 19, 90.5};
##c语言有很多种类型,不同类型的数据大小分别是多少呢?
#include<stdio.h>
int main(){
printf("zeof(char)=%d\n",sizeof(char));
printf("sizeof(short)=%d\n",sizeof(short));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(long long)=%d\n",sizeof(long long));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(long double)=%d\n",sizeof(long double));
}
##输出结果为,分别是字节数的个数:
##可以看到long和long long字节数的长度都是8,那么他们的区别呢?
##因为每个浮点类型的精度不同因此
#include<stdio.h>
int main(){
float n=123456789.0;
double m=123456789.0;
printf("n=%f\n",n);
printf("m=%lf\n",m);
}
输出为:
n=123456792.000000
m=123456789.000000
因为float的精度只有6-7为有效数字,因此他到第八位就会混乱,而double的有效数字是15-16位,因此他的数字输出没有乱,并且浮点类型没有unsigned
浮点数不能直接比较相等,但是可以比较大小
float a = 10.2;
float b = 9;
float c = a - b;
if(fabs(c - 1.2) < 0.000001)
在误差范围内认为相等。即绝对值差小于精度最小值。
float浮点数误差通常为1{^-6}(6位有效数字)。
double浮点数误差通常为1^{-15}(15位有效数字)。