C语言程序设计学习第3章

第3章:C语言基础

1.数据类型

2.常量与变量

①常量:其值不发生变化的量

整型常量:0和正负整数

实型常量:小数型式和指数型式

字符型常量:' '括起来的一个字符或以\开头的字符序列

符号常量(宏): #define 符号名 常量

②变量:其值可以改变的量

每个变量都代表一块内存区域,区域的大小由类型确定

③变量名——以标识符命名

④标识符:由字母、数字或下划线组成;首字符为字母或下划线(不得为数字);用来标识变量、符号常量、数组、函数、文件等

⑤预定义标识符:一些预编译命令:include,define,或用函数的名称:sin,sqrt

⑥保留字(关键字):int for

⑦用户标识符:自定义,给变量,函数等命名(1.可以使用预定义标识符【但一般不用,容易混淆】2.不得使用保留字)

  • 变量的定义

用变量定义语句定义变量及其类型

(1)变量定义语句的格式

(2)类型关键字:整型(int short long unsigned float)实型(float double) 字符型(char)

❗说明:

  1. 变量要先定义 后执行

  2. C语言中整型和字符型数据通用

  3. 可在定义变量的同时给赋初值

  4. 变量名区分大小写

3.整形数据

  1. C语言的整数由三种数制(十进制:以1~9开头的0~9的序列;十六进制:以“0x”或“0X”开头的0~9、A/a~F/f序列;八进制:以0开头的0~7序列)

  2. 小补充:①C语言中(十六位)长整型数用后缀“L”或“l”表示。②无符号数可以可以用后缀表示,整型常数的无符号数的后缀为“U”或“u”③前缀后缀可同时:0XB5Lu(十六进制无符号长整数)

  3. 整形数据在内存中的表示:整数不考虑正负,称为无符号数。考虑正负称为有符号数

❗❗

|类型标识符|字节数|范围| |-|-|-| |unsigned short| 2|-32768-32767| |(unsigned)int| 4| 2^31 (-2,147,483,648) 到正的 2^31-1 (2,147,483,647)| |unsigned long| 4|-2147483648~214748364|

小结:①常量:十进制,八进制,十六进制

      ②变量

      ③整型变量数的表示范围

      ④整型变量的分类:有/无符号基本整型;短整型;长整型

4.实型数据(浮点数)

  1. 指数形式:科学计数法由尾数部分、字符‘E’/‘e’与指数部分组成

    例:-2.7E-2=$2.7\times10^{-2}$

  2. 实型变量:单精度(float型) 双精度(double型)

  3. 在一般系统中,一个float型数据在内存中占4个字节,单精度实数提供7~8位有效数字。一个double占8个字节,双精度实数提供15~16位有效数字,数值的范围随机器系统而异

  4. 实型常量的类型:实型常量按照双精度数处理,实型常量后加一个f或者F以表示单精度数

  5. 单精度变量有7~8位有效数字($10^{-37}$~$10^{38}$)双精度变量有15~16位有效数字($10^{-307}$~$10^{308}$)

5.字符型数据

  • 字符型常量:

以单引号括起来的1个字符,计算机中占一个字节‘A’‘c’,单引号是定界符,不是字符常量的一部分。字符常量按照其在字符集(ASCII)中的编码值存储并参与运算

  • 反斜杠字符常量(转义字符)
  1. 用来表示控制字符(如回车)和用于功能定义的字符

  2. 以‘\’开头,后跟字符或数字,用于表示一个特定含义的字符

  3. 例如‘\n’表示换行字符,成为转义字符,常与普通字符混杂于某个字符串中

需要记住的几个转义字符:

\a警报;\b退格(8);\f 换页符 ;\n换行(10);\r回车(13);\t水平制表符(9);\v垂直制表符;\反斜杠;\'单引号;\ooo八进制值;\xhh十六进制值

  • 字符变量:
  1. 字符变量的取值是字符常量,即单个字符。字符变量的类型说明是char

  2. 字符值是以ASCII码的形式存放在在变量的内存单元之中的,所以只需要一个字节

  3. C语言允许对整型变量赋字符型值,也允许对字符变量赋以整型值

  4. 输出时,可把字符常量以整型量型式输出,也可把整型量以字符形式输出

  5. 但整型量为4字节量,字符量为1字节量。所以把整型量按字符量处理时,只有低于8位(1字节)参与处理

  • 字符串常量

“HOW ARE YOU”

注意:

  1. 没有字符串变量(可用字符数组存储)

  2. 字符串常量在内存中的存储形式:|C|H|I|N|A|\0|

  3. 字符串的长度就是字符个数。长度位n的字符串,占用n+1字节,最后一个字节存储字符为‘\0’

6.运算符

  1. C运算符简介

在C语言中,规定了运算符的优先级和结合性

优先级:C语言中,运算符的优先级分为了15级 1级最高,15级最低

表达式求值时,先做优先级高的操作,优先级相同时,运算次序由结合性决定

结合性:左结合性(先左后右)例:d=3*5/4;

          右结合性(先右后左)例:d=a=3;

目数(元数):根据运算对象的数量,有单目运算符、双目、三目

  1. 算术运算符与算术表达式

①定义:用算术运算符和括号将运算对象连接起来且符合C语法规则的式子

②运算规则:

|优先级|运算符|结合方向| |-|-|-| |1|''|里层优先| |2|++ -- |自右至左| |3|* / %|自左至右| |4|+ -|自左至右|

③运算类型

  • 双目运算符两边类型相同则运算结果类型不变

  • 不同类型运算先按类型级别低向高转换成同一类型再计算

例:优先级和结合性:i、d、l整型、f是double

10 + 'a' + i * f - d/i

          double  int

注:表达式类型是最后一个运算符的类型

  1. 运算符 /(除)

①整数相除截去余数,此运算为整除

5/2=2(≠2.5) 1/3+1/3=0

②对于浮点数则为通常意义的除法

5.0/2.0=2.5

  1. (%模运算符)求余数

①用于计算两个数相除后得到的余数

如:a%b求的是a除以b后得到的余数

②运算对象只能是整型量,其结果也是整型量(其他算术运算符的运算对象可以是整数,也可能是浮点型)

如:5%2=1 3%3=0 3%5=3 'A'%2=1

③所得结果的符号与运算符左侧操作数(被除数)的符号相同

  1. 强制类型转换运算

(类型关键字)表达式

例: (int)a

        (float)(5%3)

        (double)(x+y)

注:(int)x+y取出x的值,转换为整型与y相加 int(x)是错误写法

①类型说明符必须加括号(若表达式为单个变量,可不加)如:“int(x+y)”是不对的,类型说明符必须要用括号给括起来

②强制转换只是取出变量的值进行转换,(并不改变变量的类型)

(int)(x+y)是将x+y的值转换为整数

(int)x+y是取出x的值,转换为整型与y相加

  1. 自增、自减运算

①运算规则

++i --i 使用前使i值加(减)1 【前缀先算】

i++ i-- 使用后使i值加(减)1 【后缀后算】

②只能用于变量

右结合方向: j=++i【i=i+1;j=i】

                   j=i++【j=i;i=i+1】
  1. 关系运算符与逻辑运算符

①关系运算符的优先顺序:> | | | | == | |从左到右依次降低

第一级:()第二级:单目 右 ~ ++ -- 第三级:* / % 第四级:+ - 第五级:>> ≥ < ≤ 第七级: == ≠

②逻辑运算符:

逻辑与(&&)、逻辑或(||)、逻辑非(!)

③逻辑表达式:

逻辑运算符与一个或两个操作数构成的表达式

运算结果:【真或假】

x && y :若x,y均为真,则结果为真,否则为假

x || y:若x,y均为假,则结果为假,否则为真

!x:若x为真,则结果为假,否则为真

运算优先级:

! && || (高>低)

说明:

①!的优先级高于算数运算符(第二级),&&(第11级)和||(第12级)的优先级低于关系运算符

②逻辑运算的结果只有真,假两种。分别用整数1、0去表示

③逻辑运算对象的值,可以是任何数据类型,非0则为真,0则为假

④分支或循环结构中的条件,可用数字(任意类型)表示,且非0数值表示真,真0表示假

❗⑤特例:逻辑表达式短路特性:计算逻辑表达式时,若计算到某步已经能确定整个表达式的值,则表达式中后面部分将不再被执行(总是先算表达式1)

&&:当表达式1为0时,表达式2不执行

||:当表达式1为1(非0)时,表达式2不执行

  1. 赋值运算符和赋值表达式

一:赋值运算符:将一个表达式的值赋给一个变量,14级,右结合

二:赋值表达式: =

注:左边一定是变量(或是数组元素)

赋值表达式:用赋值运算符所构成的表达式,赋值表达式的值是赋给左边变量的值

赋值语句:格式:变量名=表达式;

例:b=c+(int)a;

赋值语句对左边变量名或等价的数组元素实施写操作

分析"x = y = z = 10+b"

说明:①如果右边表达式的类型与左边变量类型不同,将发生类型(隐式)转换 例:int a = 9.9会自动转换成9

②右结合:例:x = -b / ( 2*a )

                   a=b=c=5

                   a=(b+4)+(c=6)

            所以a=10

类型转换时,要注意避免精度的降低

  1. 复合赋值运算符(赋值自返运算符)

复合赋值运算符=运算符+赋值号

a+ =10 等价于 a=a+10

可以是任何类型:+= -= *= /=

以下不能是浮点数:%= >≥ <≤ &= ^= |=

  1. 条件运算符

条件运算符与条件表达式(13级,右)

格式:表达式1 ? 表达式2 :表达式3

计算过程:先计算表达式1的值,若为真,则结果为表达式2的值,否则为表达式3的值

例:x=(a>b)?a:b的值为a,b中的大者

y=(x≥0)?x:-x的值为x的绝对值

  1. 逗号运算符

用逗号将几个表达式连接起来而形成的表达式

一般形式:表达式1,表达式2,表达式3……

①逗号形式:按从左到右次序计算各表达式的值

②整个逗号表达式的值是最后一个表达式的值

  1. size of 运算符

一般形式:size of(操作对象)

单目运算符与所有单目运算符一样,优先级2,右结合

功能:计算操作对象所占内存空间的字节数

操作对象可以是变量名、数组名或类型说明符(也称类型标识符)

  1. 类型转换

不同类型数据进行运算时,必须按一定规则将数据转换成相同类型后再计算

①隐式类型转换

编译时由编译器按一定规则自动完成,分两种情况

a.赋值运算符两边类型不同:将右表达式的数据类型转换成与左变量类型一致。但将长型数据赋给短型变量,可能会造成数据丢失,故应该尽量避免

b.运算符两边类型不同:转换宗旨为由短型向长型转换,以免数据丢失

def6faadb0c524a1aa16a040bf78ad1.jpg

②显示类型转换

强制性转换

🥰1601zz的学习笔记

7.数据的输入输出

premise:①C语言中没有专门的输入输出语句

            ②C语言中的输入、输出是通过库函数来实现的

本节介绍4个函数

①格式输入输出函数 printf() scanf()

②字符输入输出函数 putchar() getchar()

  1. 格式输出函数:printf()

格式:printf("格式控制字符串"[输出表列]);

功能:按格式控制字符规定的格式,向标准输出设备(一般为显示器)输出表列中各输出项的值

格式控制:由双引号括起来的字符串,用于指定输入输出

普通字符:按原样输出的字符

格式说明:用来指定需输出数据的输出格式

形式:%[]

输出表列:需要输出的数据表列,彼此间用逗号分隔,可以是任意合法的表达式

①d格式符

作用:输出一个带符号的十进制整数(正数不输出符号)

格式: ①%md ②%ld(长整数)③%hd(短整数)

%d:按整型数据的实际长度输出

m:字段宽度(域宽场宽)

%ld:输出长整型数据(32位编译器不用加l)

%hd:输出短整型数据

②o、u、x格式符

作用:输出一个无符号的八进制、十六进制或十进制无符号整数

o:八进制 u:十进制 x:十六进制

③c格式符

作用:用来输出一个字符

注:一个整数,若是在0~127之间,可以用字符形式输出,系统会将该整数转换成对应的ASCII码字符

④s格式符

作用:用来输出一个字符串

格式:%s %ms %m.ns

m:输出的字符串占m列

n:输出字符串左端n个字符

注:m后面的是小数点

⑤f格式符

作用:以小数形式输出单双精度实数

格式:%f %m.nf

%f:整数部分全输出,隐含输出6位小数

m:字段宽度(整数、小数位数、数符、小数点)

n:小数位数的个数

⑥e格式符

作用:以标准化的指数形式输出实数(小数点前必须有且只有一位非0数字)

格式:%e %m.ne

%e:默认输出6位小数

m:字段宽度(指数部分占5列)

n:小数部分的位数

注意:输出表列可以是:变量、常数、数组元素、函数引用及带运算符的表达式

例:

printf("%f %d %d %f",3.14,a+b,x,cos(y));

"各输出项""各格式说明"需按顺序从左到右一一说明

错例:

实型数据用%d(o,x,u,c)输出 ❌

整型数据用%f %e %g输出 ❌

注意:格式说明个数<输出项时,多余的输出项不予输出

      格式说明个数>输出项时,输出不定值

注意:可以在格式符的域宽前加0,用来补0【只能放在左端】

注意:可以在格式符前加*,用来读后面的一个数字(不常用)

  1. 格式输入函数 scanf()

格式:scanf("格式控制","地址表列");

功能:从指定的输入设备(键盘)把数据输入到指定变量中

scanf("%d,%d",&a,&b);

%d:格式说明

","逗号:普通字符

&a:地址表列

普通字符:需原样输入的字符

格式说明:用于指定需输入数据的输入格式 %[修饰符]格式字符

地址表列:给出各变量的地址

-地址是由&运算得到的

-&是取地址运算符,得到变量在内存中的地址。单目运算符,右结合性

注意:(1)输入数据时采用的分隔符应与格式控制中的分隔符一致。格式控制中无普通字符时,输入数值型数据可用空格、Tab键、回车键作分隔符

注意:(2)输入数据时不可指定精度,但可以指定宽度

例:scanf("%3d %2d %3c",&a,&b,&ch);

注意:(3)输入格式符带有*,表示该数据不赋值

例:scanf("%d %*d %d",&a,&c); 输入:123 输出:a=1,c=3

注意:(4)无符号可用%d、%o、%x格式输入

注意:(5)❗用c格式符输入字符时,空格、转义字符均为有效字符

例:scanf("%c %c %c",&a,&b,&c);

若键入ABC(enter) 则a=A b=B c=C

若键入ABC(enter)则a=A,b=_ c=B

若键入A(enter)B(enter)则a=A,b=(enter)c=B

注意:(6)%d %f %s等在读入数字时,前导的空白字符将被跳过,在下列情况可认为数据输入结束:①遇空格、回车、Tab键。②遇宽度结束。③非数值字符(h、x…)

注意:(7)double必用%f(或%le) float必用%f(或%e)

  1. 字符输出函数 putchar()

格式:putchar(c);

功能:向终端输出一个字符

说明:c为参数,可以是字符型变量、整型变量、字符型常量、表达式或转义字符,但只能是单个字符而不能是字符串

例:

#include<stdio.h>
main()
{
  char ch = 'A';
  printf("%c",ch);
  putchar(ch);
  printf("%c",65);
  putchar(65);
  putchar(10);
  }
//结果是:AAAA
#include<stdio.h>

int main() {
    char a = 'O';
    int b = 75;
    putchar(a);
    putchar(b);

    return 0;
}
//结果是:OK
  1. 字符输入函数 getchar()

格式:getchar();

功能:从键盘读入一个字符 char ch = getchar();

说明:①只能读取一个字符②该字符可赋给字符变量、整型变量或作为表达式的一部分

scanf("%c",&ch); == ch = getchar();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值