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

2022-10-26 16:12:53 浏览数 (1)

宏定义

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

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

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

1.不带参数的宏定义。

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

代码语言:javascript复制
#include<stdio.h>
#define PI 3.14159
int main(){
    float r;
    scanf("%f",&r);
    float s=PI*r*r;
    printf("S=%-10.3fn",s);
    float c=PI*2*r;
    printf("C=.3fn",c);
    return 0;
}

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

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

代码语言:javascript复制
#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

代码语言:javascript复制
#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

代码语言:javascript复制
#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函数

代码语言:javascript复制
#include<stdio.h>
int main(int a,char *b[]){//参数的个数  字符串 
    int i=0;
    while(i<=2){
        printf("%sn",*(b i));
        i  ;
    }
    return 0;
}

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

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

代码语言:javascript复制
#include<stdio.h> 
typedef union Date{
    int i;
    char ch;
    double f;
}D;
int main(){
    D a;
    printf("%dn",sizeof(a));
    a.i=96;
    a.ch='A';
    printf("%dn",a.i);
    printf("%cn",a.ch);
    printf("%fn",a.f);
    return 0; 
}

枚举类型

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

enum--->常量整数

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

代码语言:javascript复制
#include<stdio.h> 
enum
Weekday{sum=1,moon,tue,wed,thu,fri,sat};
int main(){
    int a;
    enum Weekday w;//整型int常量
    printf("%dn",sizeof(w));//4
    w=fri;
    printf("%dn",w); 
    return 0;
}

0 人点赞