基本数据类型:
逻辑类型。只有两个量true和false,表示逻辑真值和逻辑假值。用Int表示(0:false;非0:true)
整数类型。C支持四种整数类型:char, short, int和long,整数类型用于处理整数。
浮点类型。C支持两种浮点类型:float和double,浮点类型用于处理包含小数部分的数值。
void类型。该类型也叫缺省型,用于描述值为空集, 主要用于说明不返回值的函数或指向任一类型的指针等。
使用char数据类型的变量需要特别注意,防止数据超出值域,例:
char c1= 129; //出错,数据越界(-127)
unsigned char c2= -1; //出错,数据越界(255)
Float不是一个确定的数值,比如写一个很小的数,用科学计数法可以表示出来,但以%f作输出时显示为0
常量是指在程序运行期间其数值不发生变化的数据。
整型常量通常简称为整数。
C语言的整数可以是十进制数、八进制数和十六进制数。例如,十进制的数值3356可以有下列三种不同的表示形式:
十进制数 3356
八进制数 06434
十六进制数 0xd1c
浮点常量又称为实数,一般含有小数部分。
在C语言中,实数只有十进制的实数,它又分为单精度实数和双精度实数,它们的表示方法基本相同。实数有两种表示方法, 即一般形式和指数形式。
指数形式的实数一般是由尾数部分、字母e或E和指数部分组成。 当一个实数的符号为正号时,可以省略不写,其表示的一般形式如下:
例如,1.176e+10 表示 1.176×1010
- 3.5789e-8 表示 -3.5789×10-8
通常表示特别大或特别小的数
所谓字符常量是指一个单一字符, 其表示形式是由两个单引号包括的一个字符。
例如,
‘A’, ‘a’, ‘Q’, ‘0’, ‘9’, ‘+’, ‘:’, ‘?’, ‘$’ 都是字符常量。
在C语言中, 字符常量具有数值。字符常量的值就是该字符的ASCII码值。
因此,可以这样说字符常量实际上是一字节的正整数。
所谓字符串常量是指用双引号括起来的一串字符来表示的数据。
所谓标识常量是指用标识符代替常量使用的一种常量, 其名称通常是一个标识符。
标识常量也叫符号常量,为了不与一般变量的名称相混淆,标识常量的名称一般使用大写英文字母的标识符。标识常量在使用之前必须预先定义。
标识常量一般说明形式: #define <标识常量名> <常量>
定义一个宏名字之后,可以在其他宏定义中使用,例如:
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
如果一个串长于一行,可在行尾用反斜线”\”续行,如下:
#define LONG_STRING “This is a very very long \
String that is used as an example”
C语言的变量在程序中用变量名表示。变量名由用户根据其用途任意命名,变量名命名遵从标识符的起名规则(只能由字母\数字\下划线组成且头一个字母只能是字母或下划线. 变量不能是C的特殊字符)。
在程序运行时,变量占据一定大小的存储空间,其大小由其数据类型来决定的,作为某变量的内存空间的首地址,称为变量的地址。
变量在程序中使用时,必须预先说明它们的存储类型和数据类型。
变量说明的一般形式是:
<存储类型> <数据类型 > <变量名> ;
<存储类型>可以是关键词auto、register、static和extern之一;
<数据类型>可以是前面讲的基本数据类型,也可以是后面要讲解的自定义的数据类型.
<变量名>是一个合法的标识符,其前面的32字符有效。
注意:在上面变量说明的式子里,<变量名>之后有一个分号“;”意味着它是一个语句,该语句我们通常称为变量的说明语句
C语言支持四种存储类型:auto, register, static和extern。
用auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。
C语言中,在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto。
例如,在函数体中,下列三条语句说明了三个auto存储类型的变量:
auto int k ; //说明一个auto整型的k变量
int j ; //省略了auto,说明一个auto整型的j变量
double x; //省略了auto,说明一个auto双精度型的变量
从作用域角度分:
局部变量:
自动变量
静态变量
存储器变量
形式参数
全局变量:
静态外部变量
外部变量
静态存储:
静态局部变量
静态外部变量
外部变量
动态存储:
自动变量
存储器变量
形式参数
register称为寄存器型,使用register关键词说明的变量主要目的是想将所说明的变量放入CPU的寄存器存储空间中,这样可以加快程序的运行速度。
如申请不到就使用一般内存,同auto ;
register 存储类型说明变量的方式如以下例子所示:
register int count;
说明一个存储类型为register的整数变量;
extern称为外部参照引用型,使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。
当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可引用这个变量。
一般用于在函数之间传递数据。
static称为静态存储类型,在C语言中,既可以在函数体内,也可在函数体外说明static 存储类型的变量。
在函数体内说明的static 存储类型的变量也是一种局部变量,与auto最大不同点是:static存储类型的变量在内存中是以固定地址存放的,而不是以堆栈方式存放的;只要整个程序还在继续运行静态变量就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。
变量初始化的一般形式如下:
<存储类型> <数据类型> <变量> = <表达式> ;
变量的初始化是指变量在被说明的同时赋给一个初值。
例如,
int i=0;
static double w=100.56,
double result = 1;
强制数据类型的转换是指采用某种方式将某种数据类型强制转换成指定的数据类型。这种转换存在两种方式:一种为显式的数据类型转换,另一种为隐式的数据类型转换。
显式的数据类型转换实现的一般形式为:
(数据类型名称)< 表达式 >
需要注意的是:
强制类型转换符后面的表达式如存在复杂运算,就一定要用小括号括起来
强制类型转换符是一种不安全的转换,一般都是将高级类型转换成低级类型,要丢失数据的精度;
强制类型转换并不改变表达式中变量的数据类型和其值。
所谓表达式是指由运算符、运算量和标点符号组成的有效序列,其目的是用来说明一个计算过程。
表达式可以独立形成语句,该语句称为表达式语句。
表达式语句的一般形式为:
<表达式> ;
C提供的算术运算符:+,-,*,/,%,++,--。
&&,||运算的短路特性:
&&:当前一个条件为假的时候后一个条件就不用再计算了
||:当前一个条件为真的时候后一个条件就不用再计算了
位移位运算的一般形式:
<运算量> <运算符> <表达式>
其中,
(1)<运算量> 必须为整型结果数值;
(2)<运算符>为左移位(<<)或 右移位(>>)运算符;
(3)<表达式> 也必须为整型结果数值。
赋值运算符为“=”,其运算的一般形式如下:
<左值表达式> = <右值表达式>
赋值复合运算符其运算的一般形式如下:
<变量> <操作符>= <表达式>
相当于下列式子:
<变量> = <变量> <操作符> <表达式>
x=y=15;
条件运算符"? :"
条件运算符"? :"是一个三目运算符, 其运算的一般形式是:
<表达式1> ? <表达式2> : <表达式3>
例如,
int x=82, y=101;
x >= y ? x+18 : y-100 //运算结果为1
x < (y-11) ? x-22 : y-1 //运算结果为60
sizeof运算符运算的一般形式如下:
sizeof(<类型或变量名>)
注意:它只针对数据类型,而不针对变量!
例如:
sizeof(double)
//计算结果为8 ,表明double类型占据8个字节
sizeof(long)
// 计算结果为4 ,表明long类型占据4个字节
sizeof(char)
//计算结果为1 ,表明char类型占据1个字节
sizeof(float)
//计算结果为4 ,表明float类型占据4个字节