Enumerations are the basic data types that programmers define themselves, and variables of this type can only take the values in the enumeration, and the benefit is the ability to prevent the erroneous assignment of variables. Usage: Enum type name {variable 1, variable 2, variable 3, ...}
C language macro definition is defined in the program head, for preprocessing, there are no parameters and two, can be regarded as a process of invocation, and function calls are not the same, not involved in the stack out of the problem, call fast. Usage: #define REPLACE name originally
Macro Definition Example 1:
# include <stdio.h> #define DD "%d"//macro definition, in the following writing can be used instead of "%d" DD. int main (void) {Register int i;i = 54321;printf (DD "\ n", i); Call the macro name with the same effect as the following statement printf ("%d\n", I); return 0;}
Macro Definition Example 2:
# include <stdio.h> #define D "%d"//macro definition is not a statement, you do not need to add a semicolon-defined 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); Macro definitions with parameters are similar to functions, which are fundamentally different from functions and do not have a function call and run faster. return 0;}
Enumeration Example 1:
# include <stdio.h>//defines enumerated constant types, enumerating all possible values of a thing, so that the type variable can only take the enumerated value. Enum WeekDay//weekday for the new type name {MonDay, Tuesday =-1, Wednesday, Thursday, FriDay, SaturDay, SunDay}; enumerated constants, whose actual values are sequentially 0, 1, 2, 3 ..., if the value is assigned on a constant, then the subsequent value is added in turn by 1. int main (void) {//int day;//defines a one-week variable and is defined as an int type, which is obviously inappropriate because the week variable is from Monday to Sunday. Enum WeekDay day = friday;printf ("%d\n", day); enumerated constants whose actual values are sequentially 0, 1, 2, and 3...return 0;}
The value of the enumeration constant:
enumerated constants, whose actual values are sequentially 0, 1, 2, 3 ..., if the value is assigned on a constant, then the subsequent value is added in turn by 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 actual value is 4return 0;} void f (enum Weekdayi) {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"); return;}
Complementary: Complement procedure:
/* Through the program, how much is the complement of a number. */# include <stdio.h>int main (void) {int i = 21;//positive integer complement hexadecimal output normal int j =-1;//negative complement hex output inverse plus 1, 0 reverse all 1, so the left is all 1, which is all f. int k = -3;int L = -100;int s = 0xfffffff5;char ch = 129; 129 the default is the int type, preceded by 0, and assigned to 1 byte variables, the first 3 bytes of data are lost. printf ("% #X \ n", i);p rintf ("% #X \ n", j);p rintf ("% #X \ n", K);p rintf ("% #X \ n", L);p rintf ("%d\n", s);p rintf ("%d\n", ch); This is why the output is-127. return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Getting Started with C programming--enumeration and macro definitions