C语言宏定义、共用体、枚举类型

C/C++
297
0
0
2022-12-01

宏定义

在c语言程序编译之前处理的内容。

一般形式:#define 标识符 字符串

  1. 宏定义
  2. 文件包含
  3. 条件编译

1.不带参数的宏定义。

例:输入圆的半径,求圆的周长(2*pi*r)和面积(pi*r*r).

#include<stdio.h>
#define PI 3.14159
int main(){
    float r;
    scanf("%f",&r);
    float s=PI*r*r;
    printf("S=%-10.3f\n",s);
    float c=PI*2*r;
    printf("C=%10.3f\n",c);
    return 0;
}

img

2.在定义宏的时候,可以使用之前定义过的宏定义。

例:给定圆的半径,求圆的周长(2*pi*r)和面积(pi*r*r).

#include<stdio.h>
#define R 4
#define PI 3.14159
#define L 2*PI*R
#define S PI*R*R
int main(){
    printf("L=%f,S=%f,L,S");
    return 0;
}

3.带参数的宏定义

带参数的宏定义不仅对字符串进行替换,还要对参数进行替换。

一般形式:#define 宏名(参数)字符串

例:给定圆的半径,求圆的面积(pi*r*r

#include<stdio.h>
#define PI 3.14159
#define S(r)PI*r*r 
int main(){
    float a=3.1;
    float area=S(a);
    printf("s=%f",area);
    return 0;
}

#define F(x) x+x

#include<stdio.h>
#define F(x) x+x
int main(){
    int a=6,b=2,c;
    c=F(a)/F(b);//a+a/b+b=6+3+2 
    printf("c=%d",c);
    return 0;
}

文件包含有俩种形式:

#include<......>系统提供给用户的

#include"......"用户自定义的文件

main函数

#include<stdio.h>
int main(int a,char *b[]){//参数的个数  字符串  
    int i=0;
    while(i<=2){
        printf("%s\n",*(b+i));
        i++;
    }
    return 0;
}

共用体(union)--数据类型

作用:在同一段内存种,存放不同类型的变量。

#include<stdio.h> 
typedef union Date{
    int i;
    char ch;
    double f;
}D;
int main(){
    D a;
    printf("%d\n",sizeof(a));
    a.i=96;
    a.ch='A';
    printf("%d\n",a.i);
    printf("%c\n",a.ch);
    printf("%f\n",a.f);
    return 0; 
}

枚举类型

如果一个变量只有几种可能的值,则可以定义枚举类型。

enum--->常量整数

定义一个枚举类型,枚举类型种的元素,默认是从0开始的。

#include<stdio.h> 
enum
Weekday{sum=1,moon,tue,wed,thu,fri,sat};
int main(){
    int a;
    enum Weekday w;//整型int常量 
    printf("%d\n",sizeof(w));//4
    w=fri;
    printf("%d\n",w); 
    return 0;
}