《C程序设计语言》——数据类型

来源:互联网 发布:淘宝卖家添加子账号 编辑:程序博客网 时间:2024/05/21 16:54

作为一个初学者,当在一次,看到这些繁琐的东西时,我实在是不想看,但还是努力克制自己,静下心来,将它又看了一遍!

1.     C语言中的变量命名(标识符)规则:

 

只能由 : 字母,数字,下划线3 种字符组成,且第一个字符不能为数字( 可以为 字母 或下划线 —— 下划线“ _ ”被看成是字母,通常用于命名较长的变量名)

注意:由于库例程的名字通常以下划线开头,因此变量名最好不要以下划线开头。

 

C语言严格区分大小写:变量名用小写字母,符号常量名全部用大写字母;

 

选择的变量名,尽量从字面上表达变量的用途(切记,不要出现 幻数,幻字母)——见名知意。

2.    基本数据类型:

 

char 类型:

字符型——用于存放:字符常量,占用一个字节,可以存放本地字符集中的一个字符。

unsigned char 表数范围  0 ~ 255 ;

char  表述范围 :-128 ~ 127 ;

ASCII 代码表中:每个小写字母比它相应的大写字母大32 ,字母与数字可以进行算术运算;

 

字符数据在内存中的存储形式:

将一个字符常量放到一个字符变量中,实际上不是把该字符本身放到内存单元中,而是将该字符的相应的ASCII代码放到内存单元中,然后再将对应的代码以 二进制的形式 存放。

输出:

以字符形式输出时:想将存储单元中的ASCII代码转换成相应的字符,输出。

以整数形式输出时:直接将ASCII代码作为整数输出。。

这个是我曾经犯过的一个错误:

题:在屏幕上输出“\\”,。

答:涉及到 转义字符,在敲代码时应为:“\\\\”,这是犯得一个错误,写成“\\\”

 

int 类型:

 

通常反映了所用机器中整数的最自然长度。

由具体环境决定,Turboc为其分配两个字节, Visual C++分配 4个字节

Visual C++ int表数范围 -2147483648 ~ 2147483647

Turbocint的表数范围 -32768 ~ 32767

Turbocsigned int的表数范围 -32768 ~ 32767

unsigned int 表数范围 0 ~ 65535 。)


在int 前加上修饰符(modifier) : short , long  整型就有了长短之分。

short类型通常为16位,long通常为32位,int类型可以为16位或32位。各编译器根据硬件特性自主选择合适的类型长度,但有限制:

short int类型至少为16位,而long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于 long类型C程序设计语言》

整型数据在内存中的存放形式(signed 与 unsigned 的区别:):

数据在内存中以补码的形式表示。

一个正整数的补码和该数的原码相同。

负数在内存中的补码:将该数的绝对值的二进制形式,按位取反再加1 。

(在存放整数的存储单元中,最左面的一位是表示符号的,改位为0 , 表示数值为正;该位为1 , 表示该数 为 负),signed 就是这个符号位有实际的意义,unsigned 就是 这个符号不再表示符号,用来表示数字。


浮点型

两种类型: float    double

浮点型的长度也取决于具体的实现;

两种表示形式:

第一: 十进制小数。0.123 , 123.0 ;

第二:指数形式 :(合法的表示形式:字母E 或 e 之前有数字,且e 后面的指数为整数形式, 在E或e 之前的小数部分中,小数点左边应有一位

(only one) 非零的数字)

 

在内存中的存放形式:

浮点型数据是按照指数形式存储。一般系统将一个浮点型数据分为 小数,指数部分分别存放。

在计算机中 以 二进制表示 小数部分,用2 的幂次来表示指数部分。

enum 枚举类型:(一个常量整型值的列表)

 

定义:将变量一一列举出来,变量的值只限于列举出来的值的范围之内。

声明:

enum weekday { sum , mon , tue, wed , thu , fri , sat};

声明一个枚举类型enum weekday , 可以用此类型定义变量:

enum weekday workday , week_end;

 

枚举值:

  1. 没有显式说明:第一个枚举名的值为 0 , 第二个为1 , 依次类推。
  2. 显式说明:以指定值的最后一个值 向后递增,直到结束。
  3. 不同枚举中的名字必须互不相同, 同一枚举中不同的名字可以有相同的值。
用法举例:
#include<stdio.h>typedef enum Day { sun , mon , tue , wed , thu , fri , sat }Day;void find (Day d){Day tomorrow ;switch (d){case sun :printf("tomorrow is monday . \n");break;case mon :printf("tomorrow is tuesday . \n");break;case tue :printf("tomorrow is wednesday . \n");break;case wed :printf("tomorrow is thursday . \n");break;case thu :printf("tomorrow is friday . \n");break;case fri :printf("tomorrow is satday . \n");break;case sat :printf("tomorrow is sunday . \n");break;}}void main(){Day d;int n ;do{printf("input integer data :");scanf("%d" , &n);if(n >= 0 && n <= 6)break;}while(1);d = (Day)n;find (d);}