歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

枚舉是編程人員自己定義的一種基本數據類型,這種類型的變量只能取枚舉中的值,好處就是能夠防止變量的錯誤賦值。用法: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