C语言学习教程第八章-枚举、位运算(2)

枚举类型变量的赋值和使用

枚举类型在使用中有以下规定:
1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。

2. 枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
main(){
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
}
3. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sum;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。
main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j++;
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");
}

时间: 2024-09-09 01:58:26

C语言学习教程第八章-枚举、位运算(2)的相关文章

C语言学习教程第八章-枚举、位运算(5)

二.位域的使用位域的使用和结构成员的使用相同,其一般形式为: 位域变量名·位域名 位域允许用各种格式输出.main(){struct bs{unsigned a:1;unsigned b:3;unsigned c:4;} bit,*pbit;bit.a=1;bit.b=7;bit.c=15;printf("%d,%d,%d\n",bit.a,bit.b,bit.c);pbit=&bit;pbit->a=0;pbit->b&=3;pbit->c|=1;p

C语言学习教程第八章-枚举、位运算(3)

位运算 前面介绍的各种运算都是以字节作为最基本位进行的. 但在很多系统程序中常要求在位(bit)一级进行运算或处理.C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序.一.位运算符C语言提供了六种位运算符:& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的

C语言学习教程第八章-枚举、位运算(4)

位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为"位域"或"位段".所谓"位域"是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数.每个域有一个域名,允许在程序中按域名进行操作. 这样就可以把几个不同的对象用一个字节的二进制位域来表示.一.位域的定义和位域变量的说明位域

C语言学习教程第八章-枚举、位运算(1)

枚举 在实际问题中, 有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月, 一个班每周有六门课程等等.如果把这些量说明为整型, 字符型或其它类型显然是不妥当的. 为此,C语言提供了一种称为"枚举"的类型.在"枚举"类型的定义中列举出所有可能的取值, 被说明为该"枚举"类型的变量取值不能超过定义的范围.应该说明的是, 枚举类型是一种基本数据类型,而不是一种构造类型, 因为它不能再分解为任何基本类型. 枚举类型的定义和

C语言及程序设计进阶例程-32 位运算及其应用

贺老师教学链接 C语言及程序设计进阶 本课讲解 位运算 #include <stdio.h> int main() { unsigned short int n = 3; int i; for(i=0; i<10; i++) { printf("%d\n",n); n<<=1; //n=n<<1; } return 0; } 按位与.或.异或 #include <stdio.h> int main() { unsigned shor

《C语言及程序设计》程序阅读——位运算及其应用

返回:贺老师课程教学链接 阅读并运行下面的程序,掌握按位运算的规则. (1) #include "stdio.h" int main() { char x=040; printf("%d\n",x=x<<1); return 0; } (2) #include "stdio.h" int main() { unsigned int a,b; a=7^3; b=~4&3; printf("%d,%d\n",a

C语言学习教程第四章-数组(3)

二维数组 前面介绍的数组只有一个下标,称为一维数组, 其数组元素也称为单下标变量.在实际问题中有很多量是二维的或多维的, 因此C语言允许构造多维数组.多维数组元素有多个下标, 以标识它在数组中的位置,所以也称为多下标变量. 本小节只介绍二维数组,多维数组可由二维数组类推而得到.二维数组类型说明二维数组类型说明的一般形式是: 类型说明符 数组名[常量表达式1][常量表达式2]-: 其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度.例如: int a[3][4]; 说明了一个

C语言学习教程第三章-C语言程序设计初步(2)

二.格式字符串 在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项.各项的意义介绍如下:1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:表示输出类型的格式字符 格式字符意义d 以十进制形式输出带符号整数(正数不输出符号)o 以八进制形式输出无符号整数(不输出前缀O)x 以十六进制形式输出无符号整数(不输出前缀OX)u 以十进制形式输出无符号整数f 以小数形式输出单.双精度实数e 以指数形式输出单.双精度实数g

C语言学习教程第三章-C语言程序设计初步(1)

C语言程序设计 本课介绍C语言程序设计的基本方法和基本的程序语句.从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构.分支结构.循环结构. 这三种基本结构可以组成所有的各种复杂程序.C语言提供了多种语句来实现这些程序结构. 本章介绍这些基本语句及其应用,使读者对C程序有一个初步的认识, 为后面各章的学习打下基础. C程序的语句 C程序的执行部分是由语句组成的. 程序的功能也是由执行语句实现的.C语句可分为以下五类:1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句 1.表