C语言基础知识(一)
内容 说明主要 1.c语言出现的历史背景内容 2.c语言的特点
3.c语言的语法规则
4.tc运行环境重点 1.c语言的语法规则
2.tc运行环境
难点 1.c语言的语法规则
2.tc运行环境
问题 什么是C语言?为什么会出现C语言?
提出一.C语言概述
1,介绍C语言出现的历史背景
2,介绍C语言的特点
3,C语言的基本结构及程序设计风格
举例:分析以下程序的结构
#include<stdio.h> /*头文件*/ 以实例分析
main() /*主函数*/
{int a,b,sum; /*声明部分,定义变量*/
a=10;b=20;
sum=a+b;
printf(“sum is %d\n”,sum); /* 输出c的值*/
}
总结,C程序的主要结构特点如下,
( 所有的c程序都是由一个或多个函数组成的。
( 在程序中,可以包含任意多个不同名的函数,但必须有且仅有一个
main()主函数。c程序总是从主函数main()开始执行的。
( c语言程序是由语句组成,使用“;”作为语句的中止符或分隔符。一行中可以有多个语句,一条语句也可以占用任意多行
( c语言程序中用{}将函数体括起来。
( c语言中注释的格式:/*注释内容*/。
二、TC运行环境
1.启动Turbo C程序假设Turbo C软件已经安装在C:\TC目录下,则可以通过以下方法启动Turbo C程序。
⑴ 在DOS操作系统下启动
在DOS提示符C:\>下,键入命令TC\TC;
⑵ 在WINDOWS操作系统下启动
进入C盘TC文件夹,用鼠标双击TC.EXE程序的图标。
界面如下图:
2.C程序窗口的介绍:
主菜单:File(文件操作) Edit(编辑)
介绍 Run(运行) Compile(编译连接) Project(项目文件)
Options(选项) Debug(调试) Break/watck (中断或观察)。
(激活各菜单用f10或用alt+菜单首字母)如:ALT+F 打开文件菜单,用光标键选择其他菜单。
说明 文件菜单:
Load 打开一个已有的源程序。
Pick 打开最近打开过的源程序。
New 新建一个C程序。
Seav 保存(扩展名为.c)
Write to 另存为
Direetory 打开当前目录下所有C程序列表
Change dir 改变当前盘当前目录
Os shell 切换到DOS界面
Quit 从系统中退出。
C语言基础知识(二)
内容 说明
主要 1.标识符内容 2.常量、变量
3.整型数据类型
4.数据类型的基本知识
5.字符型数据类型的基本知识
6.各数值型数据间的混合运算简介
重点 1.标识符
2.常量、变量
3.C语言的数据类型
4.实型数据类型的基本知识
5.字符型数据类型的基本知识难点 1.字符型数据与整型数据的相互转化
2.变量定义时赋初值
一,标识符概念 用来作变量、符号、函数和数组、文件等的名字。
规定 标识符的命名原则:由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
分类 int、if…
关键字 参考附录一标识符 预定义标识符 printf…
用户标识符 注意做到见名知义 _in、a23b…
【注意】 ( 标识符区分大小写。
( 标识符的长度为32个字符,长于32个的字符不被识别。
二、常量、变量
1,常量概念 在程序运行过程中,其值不能被改变的量。
① 直接常量
② 符号常量--用一个标识符代表一个常量,如,
#define PI 3.1415926 /*命令行定义*/
main()
{ float r,c,s;
r=2; c=2*PI*r;s=PI*r*r;
printf(“c=%f,s=%f”,c,s);
}
【注意】 ( 符号常量的值在其作用域内不能改变,也不能再被赋值。
( 习惯上,符号常量名用大写,变量名用小写。
( 改变符号常量值须在命令行中修改,“一改全改”。
2,变量概念 其值可以改变的量称为变量。遵守标识符的命名规则。
深化 变量的实质是内存存储单元
例如:a=3;其存储为:
变量名
a
变量值
存储单元
【总结】 常量与变量的区别:常量是或代表具体的数值,变量代表内存存储单元。
常量可以放到变量当中。
讲述 三,整型数据
整型常量的表示
① 十进制整数。
② 八进制整数。以0开头。
③ 十六进制整数。以0x开头。
2,整型变量
① 整型数据在内存中的存放形式数据在内存中以二进制形式存放,占用2个字节,数值以补码表示。
如定义整型变量i的值为10,在内存中存放形式为:
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
如不加限制,最高位为符号位,最大正整数为32767。
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
求负数的补码方法如下:将该数的绝对值的二进制形式,按位取反再加一。
② 整型变量的分类。见下表,
类型
字节数
数的范围
[signed] int
2
-2~(2-1)
Unsigned int
2
0~(2-1)
[signed] short [int]
2
-2~(2-1)
Unsigned int
2
0~(2-1)
Long [int]
4
-2~(2-1)
Unsigned long [int]
4
0~(2-1)
【注意】 无符号整数,因其最高位不再用来存放整数符号,因此无符号整数不可能是负数。
③ 整型变量的定义
格式 整型类型标识符 变量名
【说明】 (数据类型的选择要注意避免数据的溢出。
(长整型常量与长整型无符号整数常量用后缀l或L和
lu或LU标识
介绍 四,实型数据
1,实型数据在内存中的存放形式实型数据在内存中占4个字节(32)位。按照指数形式存贮。如实数
3.6547的存放形式如图所示:
+
.36547
1
数符 小数部分 指数
+,36547 * 10 3.6547
2,实型变量的分类。见下表:
类型
字节数
有效数字
数值范围
float(单精度)
32
6~7
10~10
double(双精度)
64
15~16
10~10
long double(长双精度)
80
18~19
10~10
3,定义实型数据:类型标识符 变量名
【注意】 避免将一个很大的数和一个很小的数直接相加或相减。
4,实型常量的类型
【说明】 (在常量的后面加f或F,编译系统会按单精度常量进行计算。
(在实型常量符值时,要注意常量类型与有效数字的关系。
五,字符型数据
1,字符常量概念 用单引号括起来的一个字符。有如下形式:
①‘a’,‘D’,‘?’,‘#’等。
② 转义字符----以“\”开头的字符序列,常见的有:
\n----换行 \t----水平制表
\b----退 \r----回车
\f----换页 \\----反斜杠字符“\”
\’---- 单引号字符 \”---- 双引号字符
\ddd----1到3位8进制数所代表的字符
\xhh----1到2位16进制数所代表的字符
【注意】 ‘\0’ 或 ‘\000’代表ASCII码为0的,空操作”。
举例 转义字符的使用
main()
{ printf(,ab c\t de\rf\tg\n”);
printf(“h\ti\b\bj k”);}
结果为:f gde
h j k
2,字符变量概念 用来存放字符常量,注意只能放一个字符
① 字符变量的定义形式如下:
char c1,c2;
② 字符变量的赋值形式如下:
c1=’a’; c2=’b’;
③ 字符数据在内存中的存储形式及其使用方法
讲解 一个字符变量在内存中占一个字节,字符型数据与整型数据可以通用。
也可以互相赋值。如下例:
main()
{ char c1; int c2;
c1=97; c2=’b’;
prntf(“%c %c\n”,c1,c2); /*以字符形式输出*/
printf(“%d %d\n”,c1,c2);} /*转换为整数形式输出*/
运行结果如下,
a b
97 98
④ 字符串常量概念 字符串常量是一对双引号括起来的字符序列。
如:“how do you do.”,“CHINA”,“$23.34”等。
区分 ⑤ 字符常量与字符串常量的区别:
a
‘a’----字符常量,在内存中占一个字节,存储形式为:
“a”----字符串常量,在字符串结尾加字符串结束
a
\0
标志’\0’。
因此存储形式为:
【注意】 不能把一个字符串赋给一个字符变量
六,变量定义时赋初值
1.单独赋初值
int a=3; <=> int a;
a=3;
2.定义变量的一部分赋初值
int a,b,c=5; <=> int a,b,c;
c=5;
【注意】 在定义变量赋初值时注意书写格式。 如下语句错误:
int a=b=c=3;
七,各类数值型数据间的混合运算整型、实型、字符型数据间可以混合运算,进行运算时,不同类型数据要先转换成同一类型,然后进行运算。转化规则如图所示:
double float
高
long
unsigned
低 int char,short
【规律】 字符型数据向整型数据转换,短字节类型向长字节类型转换。
C语言基础知识(三)
内容 说明
主要 1,运算符和表达式
内容 2,数据类型的转换
重点 算术运算中的取余和整除
难点 1,自增、自减运算符
2,复合赋值运算符引入,C语言包括多种运算,这里重点讲授算术运算符,强制类型转换运算符、赋值运算符、复合的赋值运算符、逗号运算符。其他运算符如:关系运算符,逻辑运算符,条件运算符等,在以后各章中结合有关内容将陆续介绍。
一.算术运算符
类型
运算符
说明
双目或单目
+(加)
参加运算的两个数中有一个数为实数,则结果为double型。
对于除法运算符“/”,如果两个运算对象有一个为实型数值时,其意义为实数除,结果为double型数值。如果两个运算对象都为整型数值时,其意义为整除,结果为整型数值。
两整数相除时,如果除数或被除数中有一个是负值,多数系统(包括Turbo C)采取“向零取整”的方法
-(减)
双目
*(乘)
/(除)
%(取余)
运算量必须为整数。当运算量为负数时,符号与被除数相同
【说明】 ( 双目运算符运算数的类型必须一致,否则先进行类型转换。
( 所有实型数的运算均以双精度方式进行。
二,算术运算符的优先级、结合性
1,优先级
( ),+,-,*,/,%,+,-
单目 双目
高 低
2,结合性单目运算符“-”和“+”的结合性是从右到左,其余运算符的结合性都是从左到右。
三,算术表达式
【注意】 ( 在算术表达式中使用多层圆括号时,圆括号要成对出现。
运算时从内往外依次计算。
( 不同优先级按优先级由高到低顺序进行,同级按运算符的结合方向进行。
四,强制类型转换运算符形式 (类型名)(表达式)
如,(int)x%3
(float)(5%3)
【注意】 表达式应用括号括起来。
五,自增、自减运算符
++i,--i (在使用i之前,先使i的值加1或减1)
i++,i-- (在使用i之后,使i的值加1或减1)
区分以下两条语句:i的初值为3
j=++i; (i的值先变成4,再赋给j,j的值为4)
j=i++; (先将i的值3赋给j,j的值为3,然后i变为4)
【注意】 ( 对于形如i+++j的表达式,应理解为(i++)+j的形式。
( 自增、自减运算符只适用于变量,不能用于常量和表达式。
( ++和—的结合方向是“自右至左”。 i++相当于-(i++)。
六,赋值运算符和赋值表达式
1,赋值运算符“=”
2,赋值表达式的一般形式:变量名=表达式赋值运算符的左边必须是一个代表某一存储单元的变量名,赋值运算符的右边可以是任意合法的C表达式。赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值运算符左边的变量。
3,赋值表达式的值就是经赋值运算后被赋值的变量的值。
【说明】 ( 赋值运算符的优先级别只高于逗号运算符。具有自右向左的结合性。
( 赋值号右边的表达式也可以是一个赋值表达式,按照自右向左的结合顺序。
七,复合的赋值运算符在赋值运算符前加上其它运算符构成的运算符,叫做复合赋值运算符。
C语言规定可以使用10种复合赋值运算符,它们是:
+= -= *= /= %= >>= <<= &= ∧= |=
复合赋值运算符是两种运算符的结合,所以它包含了两种运算,一种是赋值运算,另一种是和赋值运算符复合的其它运算符的运算。例如:
a +=3 等价于a = a + 3
x %=3 等价于x = x % 3
注意:如果复合赋值运算符的右边是一个表达式,则相当于它有一个括号。
八,逗号运算符和逗号表达式概念 用逗号将表达式连接起来的式子称为逗号表达式。
1,其一般形式为:表达式1,表达式2
2,逗号表达式的求解过程:先求解表达式1,再求解表达式2。
整个逗号表达式的值是表达式2的值。
说明 一个逗号表达式可以与另一个表达式组成一个新的逗号表达式。
如:(a=3*5,a*4),a+5
3,逗号表达式一般形式的扩展:
形式 表达式1,表达式2,……表达式n
【注意】 ( 并不是出现的任何逗号都是作为逗号运算符。
( 在所有运算符中,逗号运算符的优先级别最低。
内容 说明主要 1.c语言出现的历史背景内容 2.c语言的特点
3.c语言的语法规则
4.tc运行环境重点 1.c语言的语法规则
2.tc运行环境
难点 1.c语言的语法规则
2.tc运行环境
问题 什么是C语言?为什么会出现C语言?
提出一.C语言概述
1,介绍C语言出现的历史背景
2,介绍C语言的特点
3,C语言的基本结构及程序设计风格
举例:分析以下程序的结构
#include<stdio.h> /*头文件*/ 以实例分析
main() /*主函数*/
{int a,b,sum; /*声明部分,定义变量*/
a=10;b=20;
sum=a+b;
printf(“sum is %d\n”,sum); /* 输出c的值*/
}
总结,C程序的主要结构特点如下,
( 所有的c程序都是由一个或多个函数组成的。
( 在程序中,可以包含任意多个不同名的函数,但必须有且仅有一个
main()主函数。c程序总是从主函数main()开始执行的。
( c语言程序是由语句组成,使用“;”作为语句的中止符或分隔符。一行中可以有多个语句,一条语句也可以占用任意多行
( c语言程序中用{}将函数体括起来。
( c语言中注释的格式:/*注释内容*/。
二、TC运行环境
1.启动Turbo C程序假设Turbo C软件已经安装在C:\TC目录下,则可以通过以下方法启动Turbo C程序。
⑴ 在DOS操作系统下启动
在DOS提示符C:\>下,键入命令TC\TC;
⑵ 在WINDOWS操作系统下启动
进入C盘TC文件夹,用鼠标双击TC.EXE程序的图标。
界面如下图:
2.C程序窗口的介绍:
主菜单:File(文件操作) Edit(编辑)
介绍 Run(运行) Compile(编译连接) Project(项目文件)
Options(选项) Debug(调试) Break/watck (中断或观察)。
(激活各菜单用f10或用alt+菜单首字母)如:ALT+F 打开文件菜单,用光标键选择其他菜单。
说明 文件菜单:
Load 打开一个已有的源程序。
Pick 打开最近打开过的源程序。
New 新建一个C程序。
Seav 保存(扩展名为.c)
Write to 另存为
Direetory 打开当前目录下所有C程序列表
Change dir 改变当前盘当前目录
Os shell 切换到DOS界面
Quit 从系统中退出。
C语言基础知识(二)
内容 说明
主要 1.标识符内容 2.常量、变量
3.整型数据类型
4.数据类型的基本知识
5.字符型数据类型的基本知识
6.各数值型数据间的混合运算简介
重点 1.标识符
2.常量、变量
3.C语言的数据类型
4.实型数据类型的基本知识
5.字符型数据类型的基本知识难点 1.字符型数据与整型数据的相互转化
2.变量定义时赋初值
一,标识符概念 用来作变量、符号、函数和数组、文件等的名字。
规定 标识符的命名原则:由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
分类 int、if…
关键字 参考附录一标识符 预定义标识符 printf…
用户标识符 注意做到见名知义 _in、a23b…
【注意】 ( 标识符区分大小写。
( 标识符的长度为32个字符,长于32个的字符不被识别。
二、常量、变量
1,常量概念 在程序运行过程中,其值不能被改变的量。
① 直接常量
② 符号常量--用一个标识符代表一个常量,如,
#define PI 3.1415926 /*命令行定义*/
main()
{ float r,c,s;
r=2; c=2*PI*r;s=PI*r*r;
printf(“c=%f,s=%f”,c,s);
}
【注意】 ( 符号常量的值在其作用域内不能改变,也不能再被赋值。
( 习惯上,符号常量名用大写,变量名用小写。
( 改变符号常量值须在命令行中修改,“一改全改”。
2,变量概念 其值可以改变的量称为变量。遵守标识符的命名规则。
深化 变量的实质是内存存储单元
例如:a=3;其存储为:
变量名
a
变量值
存储单元
【总结】 常量与变量的区别:常量是或代表具体的数值,变量代表内存存储单元。
常量可以放到变量当中。
讲述 三,整型数据
整型常量的表示
① 十进制整数。
② 八进制整数。以0开头。
③ 十六进制整数。以0x开头。
2,整型变量
① 整型数据在内存中的存放形式数据在内存中以二进制形式存放,占用2个字节,数值以补码表示。
如定义整型变量i的值为10,在内存中存放形式为:
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
如不加限制,最高位为符号位,最大正整数为32767。
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
求负数的补码方法如下:将该数的绝对值的二进制形式,按位取反再加一。
② 整型变量的分类。见下表,
类型
字节数
数的范围
[signed] int
2
-2~(2-1)
Unsigned int
2
0~(2-1)
[signed] short [int]
2
-2~(2-1)
Unsigned int
2
0~(2-1)
Long [int]
4
-2~(2-1)
Unsigned long [int]
4
0~(2-1)
【注意】 无符号整数,因其最高位不再用来存放整数符号,因此无符号整数不可能是负数。
③ 整型变量的定义
格式 整型类型标识符 变量名
【说明】 (数据类型的选择要注意避免数据的溢出。
(长整型常量与长整型无符号整数常量用后缀l或L和
lu或LU标识
介绍 四,实型数据
1,实型数据在内存中的存放形式实型数据在内存中占4个字节(32)位。按照指数形式存贮。如实数
3.6547的存放形式如图所示:
+
.36547
1
数符 小数部分 指数
+,36547 * 10 3.6547
2,实型变量的分类。见下表:
类型
字节数
有效数字
数值范围
float(单精度)
32
6~7
10~10
double(双精度)
64
15~16
10~10
long double(长双精度)
80
18~19
10~10
3,定义实型数据:类型标识符 变量名
【注意】 避免将一个很大的数和一个很小的数直接相加或相减。
4,实型常量的类型
【说明】 (在常量的后面加f或F,编译系统会按单精度常量进行计算。
(在实型常量符值时,要注意常量类型与有效数字的关系。
五,字符型数据
1,字符常量概念 用单引号括起来的一个字符。有如下形式:
①‘a’,‘D’,‘?’,‘#’等。
② 转义字符----以“\”开头的字符序列,常见的有:
\n----换行 \t----水平制表
\b----退 \r----回车
\f----换页 \\----反斜杠字符“\”
\’---- 单引号字符 \”---- 双引号字符
\ddd----1到3位8进制数所代表的字符
\xhh----1到2位16进制数所代表的字符
【注意】 ‘\0’ 或 ‘\000’代表ASCII码为0的,空操作”。
举例 转义字符的使用
main()
{ printf(,ab c\t de\rf\tg\n”);
printf(“h\ti\b\bj k”);}
结果为:f gde
h j k
2,字符变量概念 用来存放字符常量,注意只能放一个字符
① 字符变量的定义形式如下:
char c1,c2;
② 字符变量的赋值形式如下:
c1=’a’; c2=’b’;
③ 字符数据在内存中的存储形式及其使用方法
讲解 一个字符变量在内存中占一个字节,字符型数据与整型数据可以通用。
也可以互相赋值。如下例:
main()
{ char c1; int c2;
c1=97; c2=’b’;
prntf(“%c %c\n”,c1,c2); /*以字符形式输出*/
printf(“%d %d\n”,c1,c2);} /*转换为整数形式输出*/
运行结果如下,
a b
97 98
④ 字符串常量概念 字符串常量是一对双引号括起来的字符序列。
如:“how do you do.”,“CHINA”,“$23.34”等。
区分 ⑤ 字符常量与字符串常量的区别:
a
‘a’----字符常量,在内存中占一个字节,存储形式为:
“a”----字符串常量,在字符串结尾加字符串结束
a
\0
标志’\0’。
因此存储形式为:
【注意】 不能把一个字符串赋给一个字符变量
六,变量定义时赋初值
1.单独赋初值
int a=3; <=> int a;
a=3;
2.定义变量的一部分赋初值
int a,b,c=5; <=> int a,b,c;
c=5;
【注意】 在定义变量赋初值时注意书写格式。 如下语句错误:
int a=b=c=3;
七,各类数值型数据间的混合运算整型、实型、字符型数据间可以混合运算,进行运算时,不同类型数据要先转换成同一类型,然后进行运算。转化规则如图所示:
double float
高
long
unsigned
低 int char,short
【规律】 字符型数据向整型数据转换,短字节类型向长字节类型转换。
C语言基础知识(三)
内容 说明
主要 1,运算符和表达式
内容 2,数据类型的转换
重点 算术运算中的取余和整除
难点 1,自增、自减运算符
2,复合赋值运算符引入,C语言包括多种运算,这里重点讲授算术运算符,强制类型转换运算符、赋值运算符、复合的赋值运算符、逗号运算符。其他运算符如:关系运算符,逻辑运算符,条件运算符等,在以后各章中结合有关内容将陆续介绍。
一.算术运算符
类型
运算符
说明
双目或单目
+(加)
参加运算的两个数中有一个数为实数,则结果为double型。
对于除法运算符“/”,如果两个运算对象有一个为实型数值时,其意义为实数除,结果为double型数值。如果两个运算对象都为整型数值时,其意义为整除,结果为整型数值。
两整数相除时,如果除数或被除数中有一个是负值,多数系统(包括Turbo C)采取“向零取整”的方法
-(减)
双目
*(乘)
/(除)
%(取余)
运算量必须为整数。当运算量为负数时,符号与被除数相同
【说明】 ( 双目运算符运算数的类型必须一致,否则先进行类型转换。
( 所有实型数的运算均以双精度方式进行。
二,算术运算符的优先级、结合性
1,优先级
( ),+,-,*,/,%,+,-
单目 双目
高 低
2,结合性单目运算符“-”和“+”的结合性是从右到左,其余运算符的结合性都是从左到右。
三,算术表达式
【注意】 ( 在算术表达式中使用多层圆括号时,圆括号要成对出现。
运算时从内往外依次计算。
( 不同优先级按优先级由高到低顺序进行,同级按运算符的结合方向进行。
四,强制类型转换运算符形式 (类型名)(表达式)
如,(int)x%3
(float)(5%3)
【注意】 表达式应用括号括起来。
五,自增、自减运算符
++i,--i (在使用i之前,先使i的值加1或减1)
i++,i-- (在使用i之后,使i的值加1或减1)
区分以下两条语句:i的初值为3
j=++i; (i的值先变成4,再赋给j,j的值为4)
j=i++; (先将i的值3赋给j,j的值为3,然后i变为4)
【注意】 ( 对于形如i+++j的表达式,应理解为(i++)+j的形式。
( 自增、自减运算符只适用于变量,不能用于常量和表达式。
( ++和—的结合方向是“自右至左”。 i++相当于-(i++)。
六,赋值运算符和赋值表达式
1,赋值运算符“=”
2,赋值表达式的一般形式:变量名=表达式赋值运算符的左边必须是一个代表某一存储单元的变量名,赋值运算符的右边可以是任意合法的C表达式。赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值运算符左边的变量。
3,赋值表达式的值就是经赋值运算后被赋值的变量的值。
【说明】 ( 赋值运算符的优先级别只高于逗号运算符。具有自右向左的结合性。
( 赋值号右边的表达式也可以是一个赋值表达式,按照自右向左的结合顺序。
七,复合的赋值运算符在赋值运算符前加上其它运算符构成的运算符,叫做复合赋值运算符。
C语言规定可以使用10种复合赋值运算符,它们是:
+= -= *= /= %= >>= <<= &= ∧= |=
复合赋值运算符是两种运算符的结合,所以它包含了两种运算,一种是赋值运算,另一种是和赋值运算符复合的其它运算符的运算。例如:
a +=3 等价于a = a + 3
x %=3 等价于x = x % 3
注意:如果复合赋值运算符的右边是一个表达式,则相当于它有一个括号。
八,逗号运算符和逗号表达式概念 用逗号将表达式连接起来的式子称为逗号表达式。
1,其一般形式为:表达式1,表达式2
2,逗号表达式的求解过程:先求解表达式1,再求解表达式2。
整个逗号表达式的值是表达式2的值。
说明 一个逗号表达式可以与另一个表达式组成一个新的逗号表达式。
如:(a=3*5,a*4),a+5
3,逗号表达式一般形式的扩展:
形式 表达式1,表达式2,……表达式n
【注意】 ( 并不是出现的任何逗号都是作为逗号运算符。
( 在所有运算符中,逗号运算符的优先级别最低。