1.常量和变量:
????1.字符串常量:
????????"ab"
????????"hello?world"
????????字符串末尾都有一个用来标识字符串结尾的\0字符
????????
????????'a'和"a"区别:
????????????'a':字符常量,只有一个字符a
????????????"a":字符串常量,有2个字符'a'?+?'\0'
????????
????????"ab\0"??????????????4
如图为"ab\0"所占字节运行结果:
??????"ab\\\123ab"????????7
如图为"ab\\\123ab"所占字节运行结果:
????2.标识常量
????????#define?N???50
????????宏只是代码的替换,中间不进行任何数据计算的操作? 如下图其中N=50,M=N+N,若宏代码中间进行了操作则运行结果因该为10000,而运行结果为2600说明中间没有进行操作,运行结果是由50+50*50+50得来
???? ?
?由下图方式进入预处理界面可看出宏只是代码的替换,中间不进行任何数据计算的操作宏名一般都是大写,用来和变量区分
????3.变量:
????????数据类型?变量名;
????????int?Num1,?Num2,?Num3;
????????初始化:
????????????定义变量的时候对变量赋初值
????????赋值:
????????????定义变量后,对变量的赋值
????????初始化?!=?赋值
????????注意:
????????????1.未经初始化的变量值为随机值
????????????2.定义变量时最好对变量初始化
2.类型转换:
????1.显示类型转换(强制类型转换)
????????只会转换一次
????????(int)3.1415;
????????(int)3.78;
????????(double)100;
????????int?Num1;
????????(double)Num1;
????2.隐式类型转换
????????表达式:一个多个变量和常量组成的式子
????????????表达式一定有值
????????????表达式一定有类型
????????低精度转换成高精度
????????????浮点型精度?>?整形精度
????????????同种类型所占内存空间越大精度范围越高
????????????无符号精度?>?有符号精度
????????????float类型进行数据运算和数据处理时会转换为double类型
????????????short、char类型进行数据运算和数据处理时会转换为int类型
下图为类型转换关系:
? ? ? ? ? 例子:
? ? ? ? ? ? char?+?char?==?int?
????????????char?+?short?==?int?
????????????float?+?float?==?double?
????????????float?+?double?==?double?
????????????float?+?int?==?double?
????????????3.14?-?5
3.运算符:
????1.算数运算符:
????????+
????????-
????????*
????????/?:?不能除以0?
????????%?:?不能对浮点数操作
????????++???自增运算符
????????--???自减运算符
????????练习:
????????定义两个变量可以是整形或者浮点数类型,对这两个变量赋值,
????????并计算这两个数四则运算的结果并打印在终端
以整型为列实现方法如下:
????????i++;????先用再加
????????++i;????先加再用
下图为以++i和i++为列 i和n 的初值都为0,? ? n= ++i + i++;运行后i的值为2,n的值为3
????????i--;
????????--i;
????2.赋值运算符:
????????=
????????+=
????????-=
????????*=
????????/=
????????%=
????????左值:允许放在赋值运算符左边的值
??????????????变量??
??????????????常量、表达式均不能作为左值
????????右值:允许放在赋值运算符右边的值
??????????????常量、变量、常量变量组成的表达式
????????
????????左值为浮点数类型,右值为整形,会将值扩展精度
????????左值为整数类型,右值为浮点数类型,会舍弃精度
????????左右两边均为整形:将右值直接拷贝到左值空间中
????????
????????小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0?
????????大数据放入小空间:直接截取数据低位放入小空间
????char?ch?=?300;
????printf("ch?=?%d\n",?ch);????//44
????char?ch?=?130;
????printf("ch?=?%d\n",?ch);????//-126
????3.三目运算符(特殊运算符)
??????表达式???表达式1?:?表达式2?
??????练习:定义三个变量,并对变量赋值,
????????????通过三目运算符获得3个数中的最大值并打印
实现方法及结果如下:
??????结合方向:自右至左
??????x?>?y???x?:?(y?>?z???y?:?z)
????4.逗号运算符
????????从左到右依次执行表达式,并将最后一个逗号表达式的结果作为整体逗号表达式的结果
下图为逗号运算符例子及结果:
????5.sizeof运算符
????????sizeof?(数据类型/变量名)?获得数据类型/变量在内存中所占的字节数
实现方法如下
1.C语言中常用的输入输出函数:
????1.getchar?putchar?
????2.scanf?printf?
????3.gets?puts?
1.putchar?
????功能:在终端打印一个字符?
????示例:?
????????putchar('a');
????????
????????char?ch?=?'A';
????????putchar(ch);
????????putchar(ch?+?32);
????注意:
????????1.putchar只能打印一个字符,想打印多个字符需要多次调用putchar?
????????2.putchar只能打印字符?
????练习:
????????利用putchar在屏幕上打印?Hello?World!
下图为用ASCII码的方法完成的还可直接输入字符打出
2.getchar?
????功能:?从终端接收一个字符?
????示例:如图为需要在键盘上输入一个字符程序才能继续运行否则程序将阻塞:
????注意:
????????1.getchar会将程序阻塞,直到用户输入数据,程序才能继续向下执行?
????????2.getchar只能接收?一个字符,想要接收多个字符需要多次调用
????????3.getchar只能接收字符
作业:
????1.定义一个圆的半径,并赋初值,计算圆的周长和面积完成打印
? ? 如图为实现方法和运行结果:
????2.利用putchar和getchar实现从终端接收一个小写字母,转换成其对应的大写形式输出
?如图为实现方法和运行结果:
????3.定义两个整形变量并对变量赋初值(初值为2位数),要求将两个数合并成一个新数并打印
????????新数的千位是第二个数的十位
????????新数的百位是第一个数的十位
????????新数的十位是第一个数的个位
????????新数的个位是第二个数的个位
如图为实现方法和运行结果:
????????注意:利用四则运算对数字拆分和拼接
????????Num1:?12
????????Num2:?34
????????NewNum:?3124