第三回合:数据类们的PK
【学习目标】
1. 基本类型
2. 构造类型
3. 常量
4. 转义字符
5. 变量
在C语言中数据类型分为四大类型:基本数据类型、构造数据类型、指针类型、空类型。其他的类型都是从这4大类型组合派生出来的。
(1)基本数据类型:其不可以再分为别的类型了。呵呵,也就是说最小的基本的类。
(2)构造数据类型:程序员根据自己的需求,用已知的基本类型来构造新的类。如数组、结构体、联合等。
(3)指针类型:就是指针,指针是一种特殊的且又重要的数据类
(4)空类型:void
A: 基本类型
(1)整型(int、 short、 long、 unsigned、unsinged short、 unsigned long)
(2)实型(float、double、 longdouble)
(3)字符型(字符、字符串)
//运行环境win7_32系统
#include <stdio.h>
int main( void )
{
char cnum; // 声明char类型变量cnum
short snum; // 声明short类型变量snum
int inum; // 声明int类型变量inum
long lnum; // 申明long类型变量lnym
float fnum; // 申明float类型变量fnum
doublednum; // 声明dnum类型变量dnum
printf(" char占的字节:%d\n",sizeof( cnum ) );
printf(" short占的字节: %d\n", sizeof( snum ) );
printf(" int占的字节:%d\n",sizeof( inum ) );
printf(" long 占的字节: %d\n", sizeof( lnum ) );
printf(" float占的字节: %d\n", sizeof( fnum ) );
printf("double占的字节: %d\n", sizeof( dnum ) );
return0;
}
运行结果:
//求int,char,short等类型的范围
#include <stdio.h>
#include <limits.h>
int main( void )
{
printf(" char类型的范围[%d %d ]\n",CHAR_MIN, CHAR_MAX );
printf(" signed char类型的范围[%d %d ]\n", SCHAR_MIN, SCHAR_MAX );
printf(" unsigned char类型的最大值:%d\n", UCHAR_MAX );
printf(" short类型的范围[%d %d ]\n", SHRT_MIN, SHRT_MAX );
printf(" unsgned short的最大值:%d\n", USHRT_MAX );
printf(" int类型的范围[%d %d ]\n", INT_MIN, INT_MAX );
printf(" unsigned int类型的最大值:%lld\n", UINT_MAX );
printf(" long 类型的范围[%ld %ld ]\n", LONG_MIN, LONG_MAX );
printf(" unsigned int 类型的最大值:%lld\n", ULONG_MAX );
printf(" long long类型的范围[%lld %lld ]\n", LLONG_MIN,LLONG_MAX );
return0;
}
运行结果:
B: 构造类型(后面讲)
(1) 数组:存储多个相同类型的变量
int array[ 100 ]; //声明100个int型变量
(2) 结构体:把不同类型的变量集合在一起。
struct stu
{
char name[15];
int number;
flaot score;
}; //必须写分号
(3) 联合:和结的语法相同,但它的成员共享存储空间
union int_float
{
int inum;
Float fnum;
}; //必须写分号
C: 常量
常量有整型常量,浮点型常量,字符常量和字符串常量等。
(1)整型常量(即整数):
有十进制整数、八进制整数、十六进制整数
(2) 实型常量(即实数):
格式有两种:
(a) 一般形式:有数字、小数点和可能的正负符号组成:0.373、3.134、- 78.32等
(b) 指数形式:a E n(a为十进制数,n为十进制整数)其值为a*10n。有尾数部分、字母e或E(加阶码标志)和指数(阶码)部分组成:1.75E+1、-3.14e-3等
PS: 必须要有小数点!;
(3)字符常量:
字符常量由单引号括起来的字符:’V’、’A’、’a’、’+’、’-’、’12’等
C语言中的字符常量占1个字节,在存储单元中存放的不是字符本身,而是对应的ASCII码即用整数表示。
因此:
x= ‘a’+ 6; 等价于x=97+ 6;
y=‘b’+ ‘c’;等价于 y= 98+ 99;
PS:
1) 字母的大小写是不同的字符常量
2) 字符常量只能用单引号括起来,不能用双引号或其它括号。
3) 字符常量只能是单个字符,不能是字符串。
4) 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如'5'和5是不同的。'5'是字符常量,不能参与运算。
(4):字符串常量
所谓的字符串常量是用一对引号括起来的零个或多个字符的序列。
如:“hello, world!”、 “”(占一个字节’\0’)、” ”(一个空格+’\0’,站两个字节) 、 “\n”
char array[]=“aaaa” “ccccc”; //等于array[]= “aaaaccccc”;
PS:
(a):字符串常量存储时,在字符串末尾会加上一个字符串结束符’\0’,因此,n个字符的字符常量,在存储是要占n+1个字符的空间。
(b):字符串常量和字符常量是不同的量。它们之间主要有以下区别:
1) 字符常量由单引号括起来,字符串常量由双引号括起来。
2) 字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3) 字符常量可赋给另一个字符变量,但不能把字符串常量赋给其他字符变量。
4) 字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0" (ASCII码为0),这是字符串结束的标志。
(5)符号常量:
代替常量的标识符被称为符号常量。
例如:
#define 符号常量名 常量
#define PI 3.1415926
PS:
(a)习惯上用大写字母来代替符号常量
(b)#define不要以分号结束,它不是语句,而是一条预处理命令
(c)使用符号常量的好处:书写简单、易于读懂、便于维护代码
D: 转义字符[摘抄别人博客]
常用的转义字符及其含义
转义字符 | 含义 | ASCII码(16/10进制) |
\o | 空字符(NULL) | 00H/0 |
\n | 换行符(LF) | 0AH/10 |
\r | 回车符(CR) | 0DH/13 |
\t | 水平制表符(HT) | 09H/9 |
\v | 垂直制表(VT) | 0B/11 |
\a | 响铃(BEL) | 07/7 |
\b | 退格符(BS) | 08H/8 |
\f | 换页符(FF) | 0CH/12 |
\’ | 单引号 | 27H/39 |
\” | 双引号 | 22H/34 |
\\ | 反斜杠 | 5CH/92 |
\? | 问号字符 | 3F/63 |
\ddd | 任意字符 | 三位八进制 |
\xhh | 任意字符 | 二位十六进制 |
字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
在C程序中使用转义字符\ dd d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。
使用转义字符时需要注意以下问题:
1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2) \v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3)在C程序中,使用不可打印字符时,通常用转义字符表示
PS:
1,\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
2,\n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首, 不改变光标的纵坐标。
3,\t光标向前移动四格或八格,可以在编译器里设置
4,\'在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用'即可。
5,\?其实不必要。只要用?就可以了.
E: 变量
一:变量:是在程序中可以改变其值并且是用标识符命名的量,在内存中占据一定的存储单元。
(1)用于暂时存储数据的载体
(2)变量使用前必须说明,可以在函数前说明,也可以在函数的参数处说明,还可以在复合语句中说明。
二:变量的类型
(1)整型变量,由关键字int说明
如:int a, b; //说明了2个整型变量a, b
当然也可以在int前加signed(有符号),unsigned(无符号),long(长)来修饰int。
(2)实型(浮点型)变量
两类:
(a)单精度,用float来说明
如:float j, k; //j,k为单精度变量
(b) 双精度,用double来说明
如:double l, m; // l,m为双精度的变量
(3)字符型变量
又关键字char来说明
如:char a; //a为字符变量
//运行环境win7_32系统
#include <stdio.h>
int main( void )
{
char cnum; // 声明char类型变量cnum
short snum; // 声明short类型变量snum
int inum; // 声明int类型变量inum
long lnum; // 申明long类型变量lnym
float fnum; // 申明float类型变量fnum
doublednum; // 声明dnum类型变量dnum
cnum='a'; //把字符a赋值给cnum
snum=99; //把99赋值给snum
inum=9999; //把9999赋值给inum
lnum=999999; //把999999赋值给fnum
fnum=999.99; //把999.99赋值给fnum
dnum=999999.99;//把999999.99赋值给dnum
printf("%c\n", cnum );
printf("%d\n", snum );
printf("%d\n", inum );
printf("%ld\n", lnum );
printf("%.2f\n", fnum ); //保留2位小数输出
printf("%0.2lf\n", dnum ); //保留2位小数输出
return0;
}
输出结果:
(a)直接赋值,即在说明变量时就赋值
如:
int number1=123;
float number2= 123.3;
char c= ‘A’
(b)间接赋值
int number;
number = 123;
char c;
c= ‘A’;
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
转载时保留原文的链接http://oursharingclub.joinbbs.net和http://blog.csdn.net/mirrorsbeyourself