歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言編程入門——枚舉與宏定義

C語言編程入門——枚舉與宏定義

日期:2017/3/1 9:26:43   编辑:Linux編程

枚舉是編程人員自己定義的一種基本數據類型,這種類型的變量只能取枚舉中的值,好處就是能夠防止變量的錯誤賦值。用法:enum 類型名{變量1,變量2,變量3,...}

C語言中宏定義是定義在程序頭部,作預處理用,有無參和有參兩種,可以看作是一個過程的調用,與函數調用不一樣,不涉及入棧出棧問題,調用速度快。用法:#define 替換名 原名

宏定義示例1:

# include <stdio.h>

#define DD "%d" //宏定義,在以下書寫中可用DD代替"%d"。

int main(void)
{
register int i;

i = 54321;

printf(DD"\n", i); //調用宏名,與下面語句效果一樣
printf("%d\n", i);

return 0;
}

宏定義示例2:

# include <stdio.h>

#define D "%d" //宏定義不是語句,後不需要加分號
#define P printf
#define swap(a, b) {int c; c=a; a=b; b=c;}

int main(void)
{
int i = 3;
int j = 5;

swap(i, j);

P("i = "D ", j =" D "\n", i, j); //含參數的宏定義類似於函數,根本上不同於函數,不存在函數的調用,運行速度快。

return 0;
}

枚舉示例1:

# include <stdio.h>

//定義枚舉常量類型,把一個事物所有可能的取值一一列舉出來,使此類型變量只能取列舉出的值。
enum WeekDay //WeekDay為新類型名
{
MonDay, TuesDay = -1, WednesDay, ThursDay, FriDay, SaturDay, SunDay
}; //列舉的枚舉常量,其實際值默認按順序依次為0, 1, 2, 3...,若在某常量上賦值,則其後值依次加1。

int main(void)
{
//int day; //定義一個星期變量,而定義為int類型,明顯不合適,因為星期變量是從星期一到星期天。
enum WeekDay day = FriDay;

printf("%d\n", day); //列舉的枚舉常量,其實際值默認按順序依次為0, 1, 2, 3...

return 0;
}

枚舉常量的值:

列舉的枚舉常量,其實際值默認按順序依次為0, 1, 2, 3...,若在某常量上賦值,則其後值依次加1。

# include <stdio.h>

enum WeekDay
{
MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};

void f(enum WeekDay);

int main(void)
{
enum WeekDay day;

f(FriDay); //FriDay實際值是4

return 0;
}

void f(enum WeekDay i)
{
switch (i)
{
case 0:
printf("MonDay\n");
break;
case 1:
printf("TuesDay\n");
break;
case 2:
printf("WednesDay\n");
break;
case 3:
printf("ThursDay\n");
break;
case 4:
printf("FriDay\n");
break;
case 5:
printf("SaturDay\n");
break;
case 6:
printf("SunDay\n");
break;
}

return;
}

補充:補碼程序:

/*
通過程序,可知一個數的補碼是多少。
*/
# include <stdio.h>

int main(void)
{
int i = 21; //正整數的補碼十六進制輸出正常
int j = -1; //負數的補碼十六進制輸出取反加1,0取反後全為1,所以左邊全為1,即全為F。
int k = -3;
int l = -100;
int s = 0XFFFFFFF5;
char ch = 129; //129默認為int類型,前面以0補齊,賦值給1個字節變量時,前面3個字節數據丟失。

printf("%#X\n", i);
printf("%#X\n", j);
printf("%#X\n", k);
printf("%#X\n", l);
printf("%d\n", s);
printf("%d\n", ch); //這就是輸出為-127的原因。

return 0;
}

Copyright © Linux教程網 All Rights Reserved