2. 书写程序时应总遵循的规则

  1. 一个说明或一个语句占一行
  2. 用 {} 括起来的部分,通常表示了程序的某层次结构。{}
    一般与结构语句的第一个字母对齐,并单独占一行
  3. 低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。

变量:其值可以改变的量成为变量

一个变量应该有一个名字,在内存中占有一定的存储单元,变量在使用之前必须先定义。
int a=3; int是a的数据类型,a是变量名,3是变量值。

实型常量:4.6、-1.23;

1. C语言的数据类型

  • 可分为:基本数据类型,构造数据类型,指针类型,空类型
  1. 基本数据类型:其值不可以再分解其他类型,
  2. 构造数据类型:是根据已定义一个或多个数据类型用构造的方法来定义的。一个构造类型的值可以分解成多个“成员”或“元素”。每个成员都是一个基本数据类型或又是一个构造类型。构造类型:数组类型,结构类型,联合类型
  3. 指针类型:其值用来表示某个量在内存存储器中的地址
  4. 空类型:在调用函数值时,通常应向调用者返回一个函数值,类型说明符为:void

对于基本数据类型量,按其取值是否可以改变分为变量和常量;在程序执行中,其值不发生改变的量称为常量,反之;可分为:整型常量,整型变量,浮点常量,浮点变量,字符常量,字符变量,枚举常量,枚举变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先说明后使用

常量:程序执行过程中其值不发生改变的量。

  • 直接常量:
    a.整型常量:1,100,29,-10
    b.实型常量:5.2,6.4,-0.5
    c.字符常量:‘a’,’b’
  • 符号常量:用宏来代表一个常量。在C语言中,可以使用一个标识符来表示一个常量,称之为符号常量。
    符号常量在使用之前需要先定义,其一般形式为:
  • () #define 标识符 常量
    其中#define是一条预处理命令,称为红定义命令,其功能是把该标识符定义为其后的常量值。
    习惯上符号常量的标识符使用大写字母,变量标识符使用小写字母,以示区别
  • 例如:#define PI 3.1415926

标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。

2. 整型量

  • 整型量包含整型常量、整型变量。整型常量就是整常数:八进制,十六进制,十进制
    二进制到八进制转换
    1 100 011 100 110
    1 4 3 4 6
    二进制到十六进制转换:
    1 1000 1110 0110
    1 8 E 6
  1. 整型常量
    1)
    八进制整常数八进制整常数必须为0开头,即以0作为八进制数的前缀。数码取值为0~7,八进制通常是无符号数
    015(十进制为13) 0101(65)
    2) 十六进制整常数的前缀为0X或0x。数码取值 0~9,A~F 或 a~f
    0X2A(十进制13) 0XA0(160)
    3) 十进制整常数没有前缀。数码取值 0~9

十进制无符号整常数的范围为 0~65535 有符号数为 -32768~32767 ;
八进制无符号数的表示范围为 0~0177777 ; 十六进制无符号数的表示范围为
0X0~0XFFFF 或 0x0~0xFFFF
如果使用的数据超过了上述范围,就必须用长整型数来表示。长整型数是用后缀
“L” 或 “l”
十进制长整常数 158L (十进制为158) 358000L(十进制为 -358000)
八进制长整常数 012L (十进制为 10) 077L (十进制为 63)
十六进制进制长整常数 0X15L (十进制为 21) 0X10000L (十进制为 65536)
整型常数的无符号数的后缀为 “U” 或 “u”

  1. 整型变量
    1) 基本型:int 在内存中占 2 个字节,其取值为基本整常数
    -32768~32768
    2) 短整量:short int 同基本型 -32768~32768
    3) 长整型:long int 或 long 在内存中占4个字节,其取值为长整常数
    -32768~32768
    4) 无符号型:unsigned
  • 变量说明的一般形式:类型说明符 变量名称标识符 …:

<wiz_code_mirror>

 

 

 

 

 

 1 int a, b, c // (a,b,c 为整型变量) 2 long x, y // (x,y 为长整型变量) 

 

 

  • 注意:
    1.允许在一个类型说明符后,说明多个相同类型的变量。各变量之间用逗号
    间隔,类型说明符与变量名之间至少用一个空格间隔
    2.最后一个变量名之后必须以“;”号结尾
    3.变量说明必须在变量使用之前,一般放在函数体的开头部分

整型数据

  1. 程序区;
  2. 静态存储区;
  3. 动态存储区;

3. 实型量

  1. 实型常量:实型也称为 浮点型;实型常量也称为实数或者
    浮点数;十进制数形式和指数形式
    1) 十进制数形式:由数码 0~9 和小数点组成
    2)
    指数形式:由十进制数,加阶码标志“e”或“E”以及阶码组成(其一般形式为a E
    n (a为十进制数,n为十进制整数)其值为 a10,n 如: 2.1E5
    (等于2.1
    10,5))
  2. 实型变量:单精度型和双精度型
    1) 单精度说明符:float
    在C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字;
    2) 双精度说明符:double
    双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字
    3) 实型变量说明的格式和书写规格与整型相同

强制类型转换

  • 强制类型转换是通过类型转换运算来实现的。
  • 其一般形式为:
    (类型说明符)(表达式)
    其功能是吧表达式的运算结果强制转换成类型说明符所表示的类型
    int a;
    (float) a; //把a转换为实型
    (int) (x+y) //把x+y的结果转换为整型
    注意:
    (1)类型说明符和表达式都必须加括号(单个变量可以不加),
    (2)无论是强制类型转换还是自动转换,都只是为了本次运算的需要对变爱玲的数据长度进行临时替换,而不是改变变量的类型。
  1. 只有局部自动变量和形式参数可以作为寄存器变量;
  2. 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
  3. 局部静态变量不能定义为寄存器变量。

     
    外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。

3. C语言的字符集

  • 字符是组成语言的最基本的元素,C语言字符集由字母,数字,空格,标点和特殊字符组成,在字符常量中,字符串常量和注释中还可以使用汉字或其它可表示的图形符号
  1. 字母:小写字母 a~z ,大写字母 A~Z

  2. 数字:0~9 共10个

  3. 空白符(空格符,制表符,换行符)只在字符常量和字符串常量中起作用。其它地方,只起间隔作用
  4. 标点和特殊字符

实型数据

  • 十进制数形式:由0~9和小数点组成
  • 合法实数:0.0,0.12,4.567,-256.123 (必须有小数点)
  • 指数形式:由十进制数加阶码标志“e”或“E”以及阶码组成。
  • 其一般形式为: a E n (a 为十进制数,n为十进制整数)
  • 其值为 a10^n.
    如:2.1e5(2.1
    10^5) 3.7e-2(3.710^-2) 0.5e7(0.510^7)

字符型量

第2章 数据类型,运算符,表达式

C语言的数据类型:基本数据类型、构造数据类型、指针类型、空类型。

  • 构造数据类型:是根据已定义的一个或多个数据类型用构造方法来定义的。一个构造类型的值可以分解成若干个“成员”或“元素”
  • 指针类型:
    指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。

无符号长整型:类型说明符为unsigned long。

5. 变量的初始值和类型转换

  1. 变量赋初值:常常需要对变量赋初值,以便使用变量;
    类型说明符 变量1 = 值1, 变量2 = 值2···;

<wiz_code_mirror>

 

 

 

 

 

1 int a = 4, b = 2;
2 char = ch1 = 's', ch2 = 'a';
3 int a = b = c = 4;        // error 不允许连续赋值

 

 

 

  1. 变量类型的转换:变量的数据类型是可以转换的,自动转换 和
    强制转换
    1)
    自动转换:发生在不同数据类型的量在混合运算时,由编译系统自动完成,规则:
    · 若参与运算量的类型不同,则先转换成统一类型,然后进行运算
    · 转换按数据长度增加的方向进行,以保证精度不降低。如
    int型和long型运算时,先把int量转成long型后在进行运算
    ·
    所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要转成double型,再做运算
    · char型和short型参与运算时,必须先转换成int型
    ·
    在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型,如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入
    2) 强制转换:是通过类型转换来实现的,一般形式:(类型说明符)
    (表达式)
    其功能是把表达式的运算结果强制转换成类型说明符所表示的类型;
    例如:(float) a 把a转换为实型; (int) (x+y)
    把x+y的结果运算结果强制转换为整型
    · 类型说明符和表达式都必须加括号(单个变量可以不加括号),
    ·
    无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型

1.整型常量

整型常量就是整常数,C语言中的常整数有八进制,十六进制,十进制三种。
(1)十进制整常数:十进制常整数没有前缀,其数码为0~9

  • 合法的十进制整常数,123,2,4356,-100.
  • 不合法的十进制整常数:078,78A(含有非十进制数码)
  • 在程序中各个前缀用来区分各种进制数。
    (2)八进制常整数:八进制整数必须以0开头,即以0作为八进制数的前缀。数码为0~7。八进制通常是无符号数。
  • 合法的八进制整常数:015(13),0101(64),0177777(65535)
  • 不合法的八进制整常数:256,03A2,-0127
    (3)十六进制整常数:十六进制整常数的前缀为0X或0x,其数码为09,af或A~F,
  • 合法的十六进制整常数:0X2A(42),0XA0(160),0XFFFF(65535)
  • 非法的十六进制整常数:5A,0X3H

1.基本数据类型

第1章 C语言概括

 

第1章
C语言概括
1.
C源程序的结构特点
2.
书写程序时应总遵循的规则
3.
C语言的字符集
4.
C语言词汇
第2章
数据类型,运算符,表达式
1.
C语言的数据类型
2.
整型量
3.
实型量
4.
字符型量
字符常量包括字符常量和字符变量
5.
变量的初始值和类型转换
6.
基本运算符和表达式[1]
小结

 

常量与变量

在程序中是根据前缀来区分各种进制数的。因此在书写常数时不要把前缀弄错造成结果不正确。

6. 基本运算符和表达式[1]

  1. 优先级和结合性:运算符的运算优先级分为15级,优先级较高的先于优先级低的进行运算,而在一个运算量两则的运算符优先级相同时,则按运算符的结合性:即左结合性(自左向右)
    右结合性(自右向左)
  2. 算术运算符和算术表达式基本的算术运算符
    1) 加法运算符”+”
    :双目运算符,即应有两个量参与加法运算,具有右结合性
    2) 减法运算符”-“
    :双目运算符,但’-‘也可作为负值运算符,此时为单目运算符,具有左结合性
    3) 乘法运算符” * “ :双目运算符,具有左结合性
    4) 除法运算符”/”
    :双目运算符,参与运算量均为整型时,结果也为整型,舍去小数;如果运算量中有一个是实型,则结果位双精度实型,具有左结合性
    5) 求余运算符”%”
    :双目运算符,要求参与运算的量均为整型,求余运算的结果等于两数相除后的余数,具有左结合性
  3. 自增自减运算符:自增1运算符记为”++”,其功能是使变量的值自增1,自减1运算符记为”–“,其功能是使变量值自减1;自增1,自减1运算符均为单目运算符,具有右结合性
    · ++i i自增1后再参与其它运算
    · –i i自减1后再参与其它运算
    · i++ i参与运算后,i的值再自增1
    · i– i参与运算后,i的值再自减1
  4. 算术表达式:由算术运算符和括号连接起来的式子,例如:
    (a2)/c (x+r)8-(a+b)/7  ++i sin(x)+sin(y)  (++i)-(j++)+(k–)

  5. 赋值运算符和赋值表达式:简单的赋值运算符记为”=”。由
    “=”连接的式子称为赋值表达式,形式:变量 =
    表达式;赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此
    a=b=c=5 可理解为 a=(b=(c=5))

  6. 复合赋值符及表达式:在赋值符”=”之前加上其它双目运算符可构成复合赋值符;构成复合赋值表达式的形式:变量
    双目运算符 = 表达式
    它等效于 变量 = 变量 运算符 表达式

  7. 逗号运算符:”,”
    其功能是把两个表达式连接起来组成一个表达式,一般形式:表达式1,表达式2···

字符变量

字符数据在内存中的存储形式及使用方法。
每个字符变量被分配一个字节的空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在内存单元中的。

#include <stdio.h>
int main()
{
    char a,b;
    a = 120;
    b = 121;
    printf("%c,%cn",a,b);
    printf("%d,%dn",a,b);
    return 0;
}

a=x b=y
a=120 b=121

  动态存储区存放以下数据:

小结

  • C的数据类型:
    基本类型 构造类型 指针类型 空类型
  • 基本类型的分类及特点:
类型说明符 字节 数值范围
字符型 char 1 C字符集
基本整型 int 2 -32768~32767
短整型 short int 2 -32768~32767
长整型 long int 4 -214783648~214783647
无符号型 unsigned 2 0~65535
无符号长整型 unsigned long 4 0~4294967295
单精度实型 float 4 3/4E-38~3/4E+38
双精度实型 double 8 1/7E-308~1/7E+308
  • 常量后缀:
    L或l 长整型
    U或u 无符号数
    F或f 浮点数
  • 常量类型:
    整数 长整数 无符号数 浮点数 字符 字符串 符号常数 转义字符
  • 数据类型转换:
    ·
    自动转换:在不同类型数据的混合运算中,由系统自动实现转换,由少字节类型向多字节类型转换。不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型
    · 强制转换:由强制转换运算符完成转换
  • 运算符优先级和结合性:
    一般而言,单目运算符优先级较高,赋值运算符优先级低;算术运算符优先级较高,关系和逻辑运算符优先级较低;多数运算符具有左结合性,单目运算符,三目运算符、赋值
  • 表达式:
    是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个指和类型。表达式求值按运算符的优先级和结合性所规定的顺序进行~~~~

实型变量

(1)实型变量实型数据在内存中的存放形式

  • 实型数据一般占4个字节。按指数形式存储。
    |符号位 |小数部分 |指数部分 |
    小数部分占的位越多,数的有效数字越多,精度越高
    指数部分占的位数越多,数能表示的范围越大。

    (2)实型变量的分类
  • 单精度(float),双精度(double型),长双精度(long double型)三类

包括字符常量和字符变量。

4. C语言词汇

  • 六类:标识符,关键字,运算符,分隔符,常量,注释符
  1. 标识符:在程序中使用的变量,函数名,标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户定义。C
    规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且第一个字符必须是字母或者下划线(总之不能是数字)

  2. 关键字:是由C语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应与关键字同名
    1) 类型说明符:用于定义、说明变量、函数或其它数据结构的类型;如 int
    double等
    2) 语句定义符:用于表示一个语句的功能;if else 条件语句
    3) 预处理命令字:用于表示一个预处理命令; include等

  3. 运算符:C语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成
  4. 分隔符:有逗号和空格两种。逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,做间隔符
  5. 常量:C语言中使用的常量可分为数字常量,字符常量,字符串常量,符号常量,转义字符等多种
  6. 注释符:“/* */” 多行注释 # 单行注释

字符串常量和字符常量是不同的量.他们有以下区别

  • 字符常量是由单引号括起来的,字符串常量是由双引号括起来的
  • 字符常量只能是单个字符,字符串常量则含有一个火多个字符.
  • 可以吧一个字符常量付给一个字符变量,但不能把一个字符串常量付给一个字符变量.在C语言中没有相应的字符串变量。我们用一个字符数组在存放一个字符变量。
  • 字符占一个字节的内存空间.字符串常量占的内存字节数等于字符串中的字节数加一.增加的一个字节用于存放字符’’,这是字符串的结束标志。
转义字符 转义字符的意义 ASCII代码
n 回车换行 10
t 横向跳到下一制表位置 9
b 退格 8
r 回车 13
f 走纸换页 12
\ 反斜线符"" 92
单引号符 39
    ” 双引号符 34
a 鸣铃 7
ddd 1~3位八进制数所代表的字符  
xhh 1~2位十六进制数所代表的字符  

1. C源程序的结构特点

  1. 一个C语言源程序可以由一个或多个源文件组成
  2. 每个源文件可由一个或多个函数组成
  3. 一个源程序不论由多少个文件组成,都只有一个且只有一个main函数,即主函数
  4. 源程序中可以有预处理命令(include
    命令仅为其中一种),预处理命令通常应放在源文件或源程序的最前面
  5. 每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“{}”之后不能加分号
  6. 标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔

各类数据类型的混合运算

(1) 若参与运算量的类型不同,则先转换成同一类型然后进行运算.
(2)转换按数据长度增加的方向进行,以保证精度不降低,如int与long运算时,先把int转换为long,然后进行运算。
(3)所有的浮点型运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换为double型,然后进行运算。
(4)char型和short运算时,必须先转换为int
(5)在赋值运算时,赋值号两边量的数据类型不同时,赋值号右边的量的类型转换为左边量的类型.如果右边量的数据类型长度大于左边的,则会丢失一部分数据,这样会降低精度,丢失的部分四舍五入.

![Upload Paste_Image.png failed. Please try again.]

转义字符
转义字符是一种特殊的字符常量。转义字符以反斜?quot;”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”
字符。例如,在前面各例题printf函数的格式串中用到的“n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于
表示的控制代码。 常用的转义字符及其含义 转义字符  转义字符的意义 n
     回车换行 t      横向跳到下一制表位置 v
     竖向跳格 b      退格 r      回车 f    
 走纸换页 \      反斜线符”” ‘      单引号符 a
     鸣铃 ddd     1~3位八进制数所代表的字符 xhh
    1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的
ASCII代码。如101表示字?quot;A”
,102表示字母”B”,134表示反斜线,XOA表示换行等。转义字符的使用
void main() { int a,b,c; a=5; b=6; c=7; printf(“%dnt%d %dn %d
%dtb%dn”,a,b,c,a,b,c); } 此程序练习转义字符的使用
a、b、c为整数 5->a,6->b,7->c 调用printf显示程序运行结果
printf(“%dnt%d %dn %d %dtb%dn”,a,b,c,a,b,c);
程序在第一列输出a值5之后就是“n”,故回车换行;接着又是“t”,于是跳到下一制表位置(设制表位置间隔为8),再输出b值6;空二格再输出c
值7后又是”n”,因此再回车换行;再空二格之后又输出a值5;再空三格又输出b的值6;再次后”t”跳到下一制表位置(与上一行的6
对齐),但下一转义字符“b”又使退回一格,故紧挨着6再输出c值7。

4. 字符型量

  • ##### 字符常量包括字符常量和字符变量
  1. 字符常量:是用单引号括起来的一个字符。’a’ ‘b’ ‘+’ ‘?’
    都是合法的字符常量
    1) 字符常量只能用单引号括起来,不能用双引号或其他括号
    2) 字符常量只能是个单个字符,不能是字符串
    3) 字符可以是字符集任意字符,但数字被定义为字符后就不能参入数值运算
  2. 转义字符:转义字符以反斜线””开头,后跟一个或几个字符
转义字符 转义字符的意义
n 回车换行
t 横向跳到下一制表位置
v 竖向跳格
b 退格
r 回车
f 走纸换页
反斜线符""
单引号符
a 鸣铃
ddd 1~3位八进制数所代表的字符
xhh 1~2位十六进制数所代表的字符
  1. 字符变量:的取值是字符常量,即单个字符。字符变量的类型说明符是
    char。
    1)
    如x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予’x’和’y’值:
    a=’x’;b=’y’;实际上是在a,b两个单元内存放120和121的二进制代码: a 0 1
    1 1 1 0 0 0
         b 0 1 1 1 1 0 0 1
  2. 字符串常量:是由一对双引号括起的字符序列,”charn”
    “REBT”;字符串常量和字符常量是不同的量:
    1) 字符常量由单引号 括起来,字符串常量由双引号 括起来
    2)
    字符常量只能是单个字符,字符串常量则可以含一个或多个字符
    3)
    可以把一个字符常量赋值一个字符变量,但不能把一个字符串常量赋予一个字符变量;但是可以用一个字符数组来存放一个字符串常量
    4) 字符常量占一个字节
    的内存空间,字符串常量占的内存字节数等于字符串字节数加1,增加的一个字节存放字符””,这是字符串结束的标志
  3. 符号常量:可以用一个标识符来表示一个常量,在使用前必须先定义,其形式:
    #define 标识符 常量(宏定义命令)

3.十进制整常数 十进制整常数没有前缀。其数码为0~9。
以下各数是合法的十进制整常数: 237 -568 65535 1627
以下各数不是合法的十进制整常数: 023 (不能有前导0) 23D
(含有非十进制数码)

实型变量分为两类:单精度型和双精度型, 其类型说明符为float
单精度说明符,double 双精度说明符。在Turbo
C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8
个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
实型变量说明的格式和书写规则与整型相同。 例如: float x,y;
(x,y为单精度实型量) double a,b,c; (a,b,c为双精度实型量)
实型常数不分单、双精度,都按双精度double型处理。 void main(){ float a;
double b; a=33333.33333; b=33333.33333333333333;
printf(“%fn%fn”,a,b); } 此程序说明float、double的不同 a ■■■■ b
■■■■■■■■ a<—33333.33333 b<—33333.33333333333;; 显示程序结果
此程序说明float、double的不同 float a; double b; a=33333.33333;
b=33333.33333333333333; 从本例可以看出,由于a
是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b
是双精度型,有效位为十六位。但Turbo C
规定小数后最多保留六位,其余部分四舍五入。

实型数据的舍入误差

指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:a
E n(a为十进制数,n为十进制整数)其值为 a*10n

符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量

正数的补码和原码相同;

字符型数据

字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如’5’和5
是不同的。’5’是字符常量,不能参与运算。

1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
以下各数是合法的八进制数:
015(十进制为13) 0101(十进制为65) 0177777(十进制为65535)
以下各数不是合法的八进制数: 256(无前缀0)
03A2(包含了非八进制数码) -0127(出现了负号)

自动转换
自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:
1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边量的数据类型不同时,
赋值号右边量的类型将转换为左边量的类型。
如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,
丢失的部分按四舍五入向前舍入。图2 1表示了类型自动转换的规则。 void
main(){ float PI=3.14159; int s,r=5; s=r*r*PI; printf(“s=%dn”,s); }
PI<–3.14159 s<–0,r<–5 s<–r*r*PI 显示程序运行结果 float
PI=3.14159; int s,r=5; s=r*r*PI;
本例程序中,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。

C语言数据类型

十进制数形式:由数码0~ 9和小数点组成。注意,必须有小数点。

  程序中使用的各种变量都应预先加以定义,即先定义,后使用。对变量的定义可以包括三个方面:数据类型、存储类型、作用域。

整型变量

 

各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。

十进制整常数:十进制整常数没有前缀。其数码为0~9。

从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。

 

字符常量
字符常量是用单引号括起来的一个字符。例如’a’,’b’,’=’,’+’,’?’都是合法字符常量。在C语言中,字符常量有以下特点:
1.字符常量只能用单引号括起来,不能用双引号或其它括号。
2.字符常量只能是单个字符,不能是字符串。
3.字符可以是字符集中任意字符。但数字被定义为字符型之后就
不能参与数值运算。如’5’和5 是不同的。’5’是字符常量,不能参与运算。

基本型:类型说明符为int,在内存中占2个字节。

变量的初值和类型转换

整型变量

实际上是在a,b两个单元内存放120和121的二进制代码:

左面的第一位是表示符号的。

由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。

其中#define也是一条预处理命令(预处理命令都以”#”开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。

在Turbo
C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8
个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。
    静态存储方式:是指在程序运行期间分配固定的存储空间的方式。
   
动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。

字符型量包括字符常量和字符变量。

长整型:类型说明符为long int或long,在内存中占4个字节。

符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都?quot;#”开头),称为宏定义命令(在第九章预处理程序中将进一步介绍),其功能是把该标识符
定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区
别。 #define PI 3.14159 void main(){ float s,r; r=5; s=PI*r*r;
printf(“s=%fn”,s); } 由宏定义命令定义PI 为3.14159
s,r定义为实数 5->r PI*r*r->s 显示程序结果 float
s,r; r=5; s=PI*r*r; 本程序在主函数之前由宏定义命令定义PI
为3.14159,在程序中即以该值代替PI
。s=PI*r*r等效于s=3.14159*r*r。应该注意的是,符号常量不是变量,它所代表的值在整个作用域内不能再改变。也就是说,在程序中,不
能再用赋值语句对它重新赋值。

无符号型:类型说明符为unsigned。

unsigned short int0~65535            即0~(216-1)     2

字符串常量 字符串常量是由一对双引号括起的字符序列。例如: “CHINA” ,”C
program: , “$12.5”
等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别:
1.字符常量由单引号括起来,字符串常量由双引号括起来。
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量。
这是与BASIC
语言不同的。但是可以用一个字符数组来存放一个字符串常量。在数组一章内予以介绍。
4.字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符””(ASCII码为0)。这是字符
串结束的标志。例如,字符串 “C program”在内存中所占的字节为:C
program。字符常量’a’和字符串常量”a”虽然都只有一个字符,但在内存中的情况是不同的。
‘a’在内存中占一个字节,可表示为:a
“a”在内存中占二个字节,可表示为:a符号常量

原文:

0 1 1 1 1 0 0 1

整型常数的后缀:在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。

 
 指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同
的量,因此不能混为一谈。4.空类型在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中
给以说明,例如在例题中给出的max函数定义中,函数头为: int max(int a,int
b);其中“int
”类型说明符即表示该函数的返回值为整型量。又如在例题中,使用了库函数
sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句s=sin
(x);中,s
也必须是双精度浮点型,以便与sin函数的返回值一致。所以在说明部分,把s说明为双精度浮点型。但是,也有一类函数,调用后并不需要向调用者返回函数
值,
这种函数可以定义为“空类型”。其类型说明符为void。在第五章函数中还要详细介绍。在本章中,我们先介绍基本数据类型中的整型、浮点型和字符型。其余
类型在以后各章中陆续介绍。

菲律宾太阳娱乐集团 1

实型变量的分类

a:

发表评论

电子邮件地址不会被公开。 必填项已用*标注