标识符与数据类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型 int short 占用内存字节数 4个字节 2个字节 数的范围
ቤተ መጻሕፍቲ ባይዱ
-231~231-1
-32768~32767
Long char
unsigned unsigned short unsigned long
4个字节 1个字节
4个字节 2个字节 4个字节
-231 ~ 231-1 (和 int 一样,不 常用) 0~(232-1)
数值的显示
• 使用八进制显示:%o、%#o • 使用十六进制显示:%x、%#x、%#X
#include <stdio.h> int main(void) { int age = 20; printf("dec = %d;octal = %o;hex = %x\n",age,age,age); printf("dec = %d;octal = %#o;hex = %#x\n",age,age,age); return 0; }
– unsigned int varNum; – varNum = 23123; – 加上unsigned前缀,正数的取值范围是原来的两倍 – Signed与unsigned修饰符可以与 int 和 float 数据类型 一起使用 – unsigned int 支持的范围是从 0 到 4,294,967,295
整数溢出问题
#include <stdio.h> #include <limits.h> int main(void) { int max = INT_MAX; int min = INT_MIN; unsigned int umax = UINT_MAX; printf("the max+1 is %d\n",max+1); printf("the min-1 is %d\n",min-1); printf("the umax +1 is %u\n",umax+1); return 0; }
其他整数类型
• Short类型:用于仅需小数值的场合以节省空间; • Long类型:用于使用大数值的场合 • Unsigned类型:用于只使用非负值场合;
– Unsigned int
• Unsigned short类型 • Unsigned long类型 • Signed :使数据的类型更加明确;
– 英文字母:大小写26个,共52个; – 阿拉伯数字:0-9共10个数字; – 下划线与分号: – 特殊符号:
• 运算符、分隔符
标识符
• 标识符定义
–用来标识变量名、符号常量名、函数名、类型 名、文件名等的有效字符序列;
• 标识符的规则
–标识符只能由字母、数字和下划线三种字符组 成,且第一个字符必须为字母或下划线; –C 语言中的标识符大小写敏感; –用户自定义的标识符不能与关键字同名;
嵌入式Linux系统开发技术
第4讲 标识符与数据类型
基本C语言的语法
• 标识符与关键字 • 变量与常量 • C语言数据类型
C语言数据存储
• 数据的存储使用变量或常量表示
内存
数据15 15 内存中的数据
通过变量,可以为内 存中的位置提供一个 有意义的名称
C语言的字符集
• C语言的基本符号可以分为4类
• C中的关键字
–C语言中ANSI标准制定的关键字共有32个; –所有的关键字小写 –系统内置的标识符不要用于用户定义的标识符
C语言关键字
auto
do goto signed unsigne d
break
double int sizeof void
case
else if static volatile
– 定义后初始化变量
• variablename = value; • 例如:int num;num = 12;
给变量赋值,除了给一个直接的值以外,还可以通过计算获得。
变量的命名
• 编译系统将大写字母和小写字母认为是两 个不同的字符。 • 在选择变量名和其它标识符时,应注意做 到‚见名知意‛,即选有含意的英文单词 (或其缩写)作标识符。
• 定义形式 :#define 标识符 常量数据
符号常量与const关键字
• 符号常量
#define COUNT 100 提高代码的可读性,还可以做到一改全改 • 使用const关键字 const int COUNT = 100;
示例
• 要求用户输入圆的半径(radius),经过计算 求出圆面积(area)并显示在控制台;要求: 使用#define和const两种方式定义常量 PI=3.1415926 • 写程序实现游客租用游船的费用,功能如 下:要求用户输入押金及使用游船的总时 间,游船每小时30元,计算出应找回游客 多少余额;
注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数
类型类型与范围32
类型 float 位数 32位 有效位数 至少6位 取值范围 至少10-38~1038
double long double
64位 96位
至少10位 与double相同
至少10-308~10308 与double相同
• 与整型数据的存储方式不同,浮点型数据是按照指数形式 存储的。系统把一个浮点型数据分成小数部分和指数部分 ,分别存放。指数部分采用规范化的指数形式。 • 浮点数类型的表示1.23f
C语言数据类型
数据类型方便让我们 对于不同的数据分类 处理
数据类型的关键字
• K&R关键字
– Int、Long、Short、Char、Float、double、 unsigned、
• C90关键字
– Signed、void
• C99关键字
– _Bool、_Complex、_Imaginary
Int类型
注意:整数溢出程序不会报错,所以写程序时一定要小心,当达 到最大值时会从新从起点开始.(有符号数)最大值加一变成最小 值,最小值减一变成最大值。无符号整形减一为 0 (数据以补码 形式存储,符号位不参加取反等命令)
signed和unsigned类型
• signed最重要的是修改char数据类型 • unsigned 类型指定变量只能接受正值
– F或f:表示float类型 – L或l:表示long double类型;
浮点数的输出格式
• 输出浮点数的格式
– %f:输出十进制计数法的float和double数字; – %e:输出指数计数法的float和double数字; – %Lf、%Le:输出long double类型的数字;
代码示例
– Signed int;
整数类型的选择
• 使用最常用的int类型 • 优先考虑unsigned类型 • 当使用int类型不能表示一个数而使用long类 型可以做到时,使用long类型; • 在int为32位的系统中,如果需要16位的值 ,那么使用short类型可以节省存储空间;
整型数据32位机
注意:每个要显示的值都必须对应自己的格式说明符,并且显示 值的类型要同说明符相匹配;
浮点数类型
• 浮点数类型分类
– 单精度(float型) – 双精度(double型) – 长双精度型(long double)
• 浮点数的表示形式
– 小数形式:0.123; – 指数形式:3e-3
• 规范化的指数形式:在字母e(或E)之前的小数部分中,小 数点左边应有一位(且只能有一位)非零的数字. • 如:123.456可以表示为1.23456e2
• Int类型
– – – – – Int age = 21; Int age =21,score=90; Int age,score=90; #define MAX_AGE 200 Printf(‚%d‛,score);
• 整数类型的表示形式
– 十进制:没有前缀,0~9的数字组成; 12322、0、232 – 八进制:以0打头,由0~7的数字组成; 023、0101 – 十六进制:以0X或0x打头,由0~9、A~F或a~f组成 0x12=18(十进制)
标识符
• 示例:下面那些标识符是正确的?
Arena、 1sttest、 arena s_count、 marks40、 oh!god、 class_one、 start... end、int(int为数据类型)
关键字
• 关键字的概念
–就是对编译器具有特定含义的标识符,是标识符的 一个特殊的集合。
变量地址
• 变量的地址:变量在内存中总占用几个连 续的字节,开始字节的地址,就是变量的 地址。(电脑采用32位,4字节,16进制表 示)
2007
常量与变量
• 常量的概念:在程序运行中,其数值不能 被改变的量; • 常量的分类
– 直接常量:在程序中直接引用的数据; – 符号常量:用标识符来表示一个数据;
#include <stdio.h> int main(void) { float f_number = 4321.0f; double d_number = 1.234e3; long double ld_number = 1.234e-3L; printf("%f can be written %e,and float sizeof :%d\n",f_number,f_number,(sizeof f_number)); printf("%f can be written %e ,and double sizeof :%d\n",d_number,d_number,(sizeof d_number)); printf("%Lf can be written %Le,and long double sizeof :%d\n",ld_number,ld_number,(sizeof ld_number)); return 0; }
体验整数类型的显示
#include <stdio.h> #include <limits.h> int main(void) { unsigned int guessNumber = UINT_MAX; short age = SHRT_MAX; long id = LONG_MAX; printf("guessNumber is %u and not %d\n",guessNumber,guessNumber); printf("age is %hd and is %d\n",age,age); printf("id is %ld and not %hd \n",id,id); return 0; }
常量与后缀(不常用)
后缀字母
U或u L或l ll 或LL F或f
用途
Unsigned类型 Long类型
示例
123u、2345U 123L、-789l
Long long类型 3LLU,3ll,3ull 单精度浮点型 0.123F、3.1415f
整数类型的显示
%u:显示无符号整数; %ld:显示long类型整数; %h:显示short类型数据 符号可以结合使用: %lx、 %lo、%hd、 %ho、%lu、%lld、%llu • 写代码示例体验整数类型的显示 • • • •
0~65535
0~(232-1)
代码示例
#include <stdio.h> int main(void) { int i_number = 10; short s_number = 10; long l_number =10L; unsigned ui_number =10u; unsigned short us_number = 10U; unsigned long ul_number = 10UL; printf("int sizeof :%d\n",(sizeof i_number)); printf("short sizeof:%d\n",(sizeof s_number)); printf("long sizeof :%d\n",(sizeof l_number)); printf("unsigned int sizeof :%d\n",(sizeof ui_number)); printf("unsigned short sizeof :%d\n",(sizeof us_number)); printf("unsigned long sizeof :%d\n",(sizeof ul_number)); return 0; }
变量的声明与初始化
• 变量的声明 • 变量初始化的时机
– 定义时初始化变量
• Datatype variablename = value; • 例如:int num1,num2 = 12; 数据类型 变量名称;
– 先定义后使用(存储类型,默认为auto)+ 数据类型 +变量
int varName;
char
enum long struct while
const
extern
continu e
float
defaul t
for short union
registe return switch typedef
变量
• 变量
– 程序要为每一项数据分配内存,通常使用变量 来存储数据。使用变量可以引用存储在内存中 的数据,并随时根据需要显示数据或执行数据 操纵。 – 使用变量时必须‚先定义,后使用‛
ቤተ መጻሕፍቲ ባይዱ
-231~231-1
-32768~32767
Long char
unsigned unsigned short unsigned long
4个字节 1个字节
4个字节 2个字节 4个字节
-231 ~ 231-1 (和 int 一样,不 常用) 0~(232-1)
数值的显示
• 使用八进制显示:%o、%#o • 使用十六进制显示:%x、%#x、%#X
#include <stdio.h> int main(void) { int age = 20; printf("dec = %d;octal = %o;hex = %x\n",age,age,age); printf("dec = %d;octal = %#o;hex = %#x\n",age,age,age); return 0; }
– unsigned int varNum; – varNum = 23123; – 加上unsigned前缀,正数的取值范围是原来的两倍 – Signed与unsigned修饰符可以与 int 和 float 数据类型 一起使用 – unsigned int 支持的范围是从 0 到 4,294,967,295
整数溢出问题
#include <stdio.h> #include <limits.h> int main(void) { int max = INT_MAX; int min = INT_MIN; unsigned int umax = UINT_MAX; printf("the max+1 is %d\n",max+1); printf("the min-1 is %d\n",min-1); printf("the umax +1 is %u\n",umax+1); return 0; }
其他整数类型
• Short类型:用于仅需小数值的场合以节省空间; • Long类型:用于使用大数值的场合 • Unsigned类型:用于只使用非负值场合;
– Unsigned int
• Unsigned short类型 • Unsigned long类型 • Signed :使数据的类型更加明确;
– 英文字母:大小写26个,共52个; – 阿拉伯数字:0-9共10个数字; – 下划线与分号: – 特殊符号:
• 运算符、分隔符
标识符
• 标识符定义
–用来标识变量名、符号常量名、函数名、类型 名、文件名等的有效字符序列;
• 标识符的规则
–标识符只能由字母、数字和下划线三种字符组 成,且第一个字符必须为字母或下划线; –C 语言中的标识符大小写敏感; –用户自定义的标识符不能与关键字同名;
嵌入式Linux系统开发技术
第4讲 标识符与数据类型
基本C语言的语法
• 标识符与关键字 • 变量与常量 • C语言数据类型
C语言数据存储
• 数据的存储使用变量或常量表示
内存
数据15 15 内存中的数据
通过变量,可以为内 存中的位置提供一个 有意义的名称
C语言的字符集
• C语言的基本符号可以分为4类
• C中的关键字
–C语言中ANSI标准制定的关键字共有32个; –所有的关键字小写 –系统内置的标识符不要用于用户定义的标识符
C语言关键字
auto
do goto signed unsigne d
break
double int sizeof void
case
else if static volatile
– 定义后初始化变量
• variablename = value; • 例如:int num;num = 12;
给变量赋值,除了给一个直接的值以外,还可以通过计算获得。
变量的命名
• 编译系统将大写字母和小写字母认为是两 个不同的字符。 • 在选择变量名和其它标识符时,应注意做 到‚见名知意‛,即选有含意的英文单词 (或其缩写)作标识符。
• 定义形式 :#define 标识符 常量数据
符号常量与const关键字
• 符号常量
#define COUNT 100 提高代码的可读性,还可以做到一改全改 • 使用const关键字 const int COUNT = 100;
示例
• 要求用户输入圆的半径(radius),经过计算 求出圆面积(area)并显示在控制台;要求: 使用#define和const两种方式定义常量 PI=3.1415926 • 写程序实现游客租用游船的费用,功能如 下:要求用户输入押金及使用游船的总时 间,游船每小时30元,计算出应找回游客 多少余额;
注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数
类型类型与范围32
类型 float 位数 32位 有效位数 至少6位 取值范围 至少10-38~1038
double long double
64位 96位
至少10位 与double相同
至少10-308~10308 与double相同
• 与整型数据的存储方式不同,浮点型数据是按照指数形式 存储的。系统把一个浮点型数据分成小数部分和指数部分 ,分别存放。指数部分采用规范化的指数形式。 • 浮点数类型的表示1.23f
C语言数据类型
数据类型方便让我们 对于不同的数据分类 处理
数据类型的关键字
• K&R关键字
– Int、Long、Short、Char、Float、double、 unsigned、
• C90关键字
– Signed、void
• C99关键字
– _Bool、_Complex、_Imaginary
Int类型
注意:整数溢出程序不会报错,所以写程序时一定要小心,当达 到最大值时会从新从起点开始.(有符号数)最大值加一变成最小 值,最小值减一变成最大值。无符号整形减一为 0 (数据以补码 形式存储,符号位不参加取反等命令)
signed和unsigned类型
• signed最重要的是修改char数据类型 • unsigned 类型指定变量只能接受正值
– F或f:表示float类型 – L或l:表示long double类型;
浮点数的输出格式
• 输出浮点数的格式
– %f:输出十进制计数法的float和double数字; – %e:输出指数计数法的float和double数字; – %Lf、%Le:输出long double类型的数字;
代码示例
– Signed int;
整数类型的选择
• 使用最常用的int类型 • 优先考虑unsigned类型 • 当使用int类型不能表示一个数而使用long类 型可以做到时,使用long类型; • 在int为32位的系统中,如果需要16位的值 ,那么使用short类型可以节省存储空间;
整型数据32位机
注意:每个要显示的值都必须对应自己的格式说明符,并且显示 值的类型要同说明符相匹配;
浮点数类型
• 浮点数类型分类
– 单精度(float型) – 双精度(double型) – 长双精度型(long double)
• 浮点数的表示形式
– 小数形式:0.123; – 指数形式:3e-3
• 规范化的指数形式:在字母e(或E)之前的小数部分中,小 数点左边应有一位(且只能有一位)非零的数字. • 如:123.456可以表示为1.23456e2
• Int类型
– – – – – Int age = 21; Int age =21,score=90; Int age,score=90; #define MAX_AGE 200 Printf(‚%d‛,score);
• 整数类型的表示形式
– 十进制:没有前缀,0~9的数字组成; 12322、0、232 – 八进制:以0打头,由0~7的数字组成; 023、0101 – 十六进制:以0X或0x打头,由0~9、A~F或a~f组成 0x12=18(十进制)
标识符
• 示例:下面那些标识符是正确的?
Arena、 1sttest、 arena s_count、 marks40、 oh!god、 class_one、 start... end、int(int为数据类型)
关键字
• 关键字的概念
–就是对编译器具有特定含义的标识符,是标识符的 一个特殊的集合。
变量地址
• 变量的地址:变量在内存中总占用几个连 续的字节,开始字节的地址,就是变量的 地址。(电脑采用32位,4字节,16进制表 示)
2007
常量与变量
• 常量的概念:在程序运行中,其数值不能 被改变的量; • 常量的分类
– 直接常量:在程序中直接引用的数据; – 符号常量:用标识符来表示一个数据;
#include <stdio.h> int main(void) { float f_number = 4321.0f; double d_number = 1.234e3; long double ld_number = 1.234e-3L; printf("%f can be written %e,and float sizeof :%d\n",f_number,f_number,(sizeof f_number)); printf("%f can be written %e ,and double sizeof :%d\n",d_number,d_number,(sizeof d_number)); printf("%Lf can be written %Le,and long double sizeof :%d\n",ld_number,ld_number,(sizeof ld_number)); return 0; }
体验整数类型的显示
#include <stdio.h> #include <limits.h> int main(void) { unsigned int guessNumber = UINT_MAX; short age = SHRT_MAX; long id = LONG_MAX; printf("guessNumber is %u and not %d\n",guessNumber,guessNumber); printf("age is %hd and is %d\n",age,age); printf("id is %ld and not %hd \n",id,id); return 0; }
常量与后缀(不常用)
后缀字母
U或u L或l ll 或LL F或f
用途
Unsigned类型 Long类型
示例
123u、2345U 123L、-789l
Long long类型 3LLU,3ll,3ull 单精度浮点型 0.123F、3.1415f
整数类型的显示
%u:显示无符号整数; %ld:显示long类型整数; %h:显示short类型数据 符号可以结合使用: %lx、 %lo、%hd、 %ho、%lu、%lld、%llu • 写代码示例体验整数类型的显示 • • • •
0~65535
0~(232-1)
代码示例
#include <stdio.h> int main(void) { int i_number = 10; short s_number = 10; long l_number =10L; unsigned ui_number =10u; unsigned short us_number = 10U; unsigned long ul_number = 10UL; printf("int sizeof :%d\n",(sizeof i_number)); printf("short sizeof:%d\n",(sizeof s_number)); printf("long sizeof :%d\n",(sizeof l_number)); printf("unsigned int sizeof :%d\n",(sizeof ui_number)); printf("unsigned short sizeof :%d\n",(sizeof us_number)); printf("unsigned long sizeof :%d\n",(sizeof ul_number)); return 0; }
变量的声明与初始化
• 变量的声明 • 变量初始化的时机
– 定义时初始化变量
• Datatype variablename = value; • 例如:int num1,num2 = 12; 数据类型 变量名称;
– 先定义后使用(存储类型,默认为auto)+ 数据类型 +变量
int varName;
char
enum long struct while
const
extern
continu e
float
defaul t
for short union
registe return switch typedef
变量
• 变量
– 程序要为每一项数据分配内存,通常使用变量 来存储数据。使用变量可以引用存储在内存中 的数据,并随时根据需要显示数据或执行数据 操纵。 – 使用变量时必须‚先定义,后使用‛