第二章

本文详细介绍了C语言的基本数据类型,包括整型、浮点型、字符型及其常量表示,强调了类型转换和运算符的使用规则。同时,讨论了变量、常量和符号常量的区别,并解释了不同类型数据间的混合运算和运算符的优先级与结合性。此外,还提到了自增、自减运算符以及强制类型转换的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二章

学习标准仅供参考

基本数据类型
C语言数据类型基本类型、数字、结构、指针类型、空类型掌握
C语言常量常量和变量、整型、实型、字符串型和字符串变量的表示方法掌握
各类型变量的定义和说明、变量的初始化掌握
基本运算和表达式
运算符运算符种类、功能、目数、优先级、结合性、副作用理解
算术运算自动类型转换规则掌握
关系和逻辑运算运算规则和逻辑运算的优化规则掌握
赋值运算自动类型转换规则和复合赋值掌握
其他运算条件、逗号、求存储空间大小运算知道
表达式各类型数据混合运算中求值顺序、基本运算执行顺序及结果类型掌握
常量

​ 常量:在程序运行中,其值不能被改变的量

整型常量

​ 如:1000,0,-1234等都是整型常量。

实型常量

两种表示形式:

  1. 十进制小数形式,由数字和小数点组成。如:123.45,0.345等
  2. 指数形式,如:12.34e3(代表12.34*10^3)

注意: e或E之前必须有数字,且e或E后面必须为整数。

字符常量

  1. 普通字符:用单撇号括起来的一个字符。如:‘a’,‘6’,’#'等

    注意:不能写成’ab’, ‘12’

  2. 转义字符:以字符\开头的字符序列。

转义字符字符值输出结果
\\一个反斜号()输出此字符
\a警告产生声音或视觉信号
\f换页将当前位置移到下一页的开头
\n换行将当前位置移到下一行的开头
\r回车将当前位置移到本行的开头
\t水平制表符将当前位置移到下一个tab位置
\b垂直制表符将当前位置后退一个字符

说明:从其字面形式上即可识别的常量称为“字面常量”或“直接常量”。字面常量是没有名字的不变量。

符号常量
  用#define指令,指定用一个符号名称代表一个常量。

使用符号常量的好处:

  • 含义清楚
  • 在需要改变程序中多处用到的同一个常量时,能做到“一改全改”。

注意:要区分符号常量和变量,不要把符号常量误认为变量。符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。为与变量名相区别,习惯上符号常量用大写表示,如PI,PRICE等。

变量

常变量
  可以说,常变量是有名字的不变量,而常量是没有名字的不变量。

从使用的角度看,常变量具有符号常量的优点,而且使用更方便。有了常变量以后,可以不必多用符号常量。

标识符
  C语言规定标识符只能由字母、数字和下画线3种字符组成,且第1个字符必须为字母或下画线。

注意:编译系统认为大写字母和小写字母是两个不同的字符。

数据类型

整型数据

基本整形(int型)

​ 编译系统分配2个字节(16位)或4个字节(32位)(由具体的C编译系统决定)

​ 在存储单元中的存储方式是:用整数的补码形式存放。

5的补码 [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1]

​ 在存放整数的存储单元中,最左面以为是用来表示符号的,如果该位为0,表示数值为正;该位为1,表示数值为负。

短整型(short int)

​ 短整型2个字节,值的范围在-32768~32767

长整型(long int)

​ 分配4个字节,取值范围在-2^31~(2^31-1)

双长整型(long long int)

​ 分配8个字节。

整型变量的符号属性

​ 只有整型数据可以加signedunsigned修饰符,实型数据不可以。

​ 对无符号整型数据用“%u“格式输出。%u表示用无符号十进制数的格式输出。

​ 在类型符号前面加上修饰符unsigned表示指定该变量是无符号整数类型。如果加上修饰符signed则是有符号类型。如果既未指定为signed也未指定为unsigned的,默认为“有符号类型”。

​ 有符号整型数据存储单元中最高位代表符号(0为正,1为负)。无符号型变量只能存放不带符号的整数。

如:int(基本整型)4字节取值在-2147483648~2147483647,unsigned int(无符号基本整型)取值在0~4294967295

unsigned short price = 50;  // 定义price为无符号短整型变量
printf("%u\n", price);      // 指定用无符号十进制数的格式输出
字符型数据

ASCII代码最多用7个二进位就可以表示。所以在C语言中,指定用一个字节(8位)存储一个字符(所有系统都不例外)。此时,字节中的第1位置为0。

在使用有符号字符型变量时,允许存储的值为一128∼127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0∼127这一部分,其第1位都是0。

字符变量:用类型char定义字符变量

char c = '?'

类型字节数取值范围
signed char(有符号字符型)1-128~127
unsigned char(无符号字符型)10~255
浮点型数据

实数是以指数形式存放在存储单元中的。

​ 由于小数点位置可以浮动,所以实数的指数形式称为浮点数。

float(单精度浮点型)

分配4个字节,数值以规范化的二进制数指数形式存放在存储单元中。

​ 小数部分占的位(bit)数愈多,数的有效数字愈多,精度也就愈高。指数部分占的位数愈多,则能表示的数值范围愈大。float型数据能得到6位有效数字,数值范围为−3.4×10−38∼3.4×1038−3.4×10−38∼3.4×1038。

double(双精度浮点型)

在C语言中进行浮点数的算术运算时,将float型数据都自动转换为double型,然后进行运算。

long double型

Visual C++则对long double型和double型一样处理,分配8个字节。请读者在使用不同的编译系统时注意其差别。

如何确定常量的类型

整型常量

在一个整数的末尾加大写字母L或小写字母l,表示它是长整型(long int)。但在Visual C++中由于对intlong int型数据都分配4个字节,因此没有必要用long int型。

浮点型常量

凡是以小数形式或指数形式出现的实数,是浮点型常量,在内存中都以指数形式存储。

​ 加字母Ff,就表示是float型常量,分配4个字节。如果在实型常量后面加大写或小写的L,则指定此常量为long double型。

注意:要区分类型与变量。
  有些读者容易弄不清类型和变量的关系,往往把它们混为一谈。应当看到它们是既有联系又有区别的两个概念。每一个变量都属于一个确定的类型,类型是变量的一个重要的属性。变量是占用存储单元的,是具体存在的实体,在其占用的存储单元中可以存放数据。而类型是变量的共性,是抽象的,不占用存储单元,不能用来存放数据。

运算符与表达式

基本算术运算符

如果除数或被除数中有一个为负值,则舍入的方向是不固定的。多数C编译系统(如Visual C++ )采取“向零取整”的方法,取整后向零靠拢。

%运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。

​ 除%以外的运算符的操作数都可以是任何算术类型

####自增(++)、自减(—)运算符

++i, --i (在使用i之前,先使i的值加(减)1)

​ i++, i-- (在使用i之后,使i的值加(减)1)

// 初值i等于3
j = ++i;  // i的值先变成4,在赋给j,j的值为4
j = i++;  // 先将i的值赋值给j,j的值为3,然后i变为4

注意:自增运算符和自减运算符只能用于变量,而不能用于常量或表达式。

算术表达式和运算符的优先级与结合性

关于“结合性”的概念在其他一些高级语言中是没有的,是C语言的特点之一希望能弄清楚。

​ 如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。“自左向右的结合方向”又称“左结合性”,即运算对象先与左面的运算结合。

右结合性例如,赋值运算符,a=b=c。

不同类型数据间的混合运算

​ 两侧的数据类型不同,则先自动进行类型转换,使二者具有同一类型,然后进行运算。

规律:

  • 有int型与float或double型数据运算,先都转化为double型

  • 字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。

    典型例子:将A的ASCII代码加32,就能得到a的ASCII代码。

强制类型转换运算符

(类型名)(表达式)

​ 例如:
(double)a (将a转换为double类型)
(int) (x+y) (将x+y的值转换成int型)

注意:表达式应该用括号括起来。
  需要说明的是,在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。

C运算符
算术运算符(+ - * / % ++ --)
关系运算符(> < == >= <= !=)
逻辑运算符(! && ||)
位运算符(<< >> ~ | ^ &)
赋值运算符(=及其扩展赋值运算符)
条件运算符(?: )
逗号运算符(,)
指针运算符(*和&)
成员运算符(.->)
求字节数运算符(sizeof)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值