day3作业

本文介绍了C语言中的变量定义、初始化和赋值,包括存储类型和变量的取值范围。详细讲解了类型转换,特别是有符号和无符号数之间的转换。此外,还涵盖了标准输入输出函数如printf和scanf,以及字符输入输出函数getchar和putchar。最后讨论了算术运算符和自增自减运算符,并提供了相关练习。
摘要由CSDN通过智能技术生成

学习目标:

一、变量

【1】定义【2】变量的初始化和赋值【3】类型转换【4】变量的取值范围

二、标准输入输出函数【1】printf 【2】sacnf【3】字符的输入函数getchar()【4】字符的输出函数 putchar()

三、运算符

【1】算术运算符【2】自增自减运算符


学习内容:

 

一、变量

【1】定义

存储类型 数据类型 变量名; //在日常写代码的过程中存储类型一般省略 变量名是一个标识符,要符合标识符的命名规范

标识符的命名规范:

  1. 由数字、字母和下划线构成
  2. 不能以数字开头
  3. 严格区分大小写
  4. 不能和C语言的32个关键字重复

 ii)存储类型

【2】变量的初始化和赋值

初始化,在定义的直接给初始值

赋值,先定义后赋值

【3】类型转换

i)隐式的强制类型转换

转换的过程是编译器做的

ii)显式强转

格式:(强转的目标类型)强转的数据;

 

iii)有符号和无符号数之间的转换

隐式的强制类型转换,无符号数和有符号数一起运算,强转成无符号数

 

【4】变量的取值范围

有符号数signed、无符号数unsigned

默认都是有符号数

根据数据的最高位是符号位,0表示是正数,1表示负数

原码、反码和补码

计算机中,数据都是以补码的形式进行存储和运算。

都是二进制表示的

原码:人能看懂的,十进制转换过来的

反码:原码和补码的一个中间状态 ,正数原码、反码和补码都一样,负数,原码的除符号位外其他位取反

补码:计算机中存储和运算用的都是补码,正数原码、反码和补码都一样,负数的补码是反码+1

正数的原反补都相同

负数的反码是原码除符号位外取反,补码是反码+1

有符号数 -123 +123

原码1111 1011 0111 1011

反码1000 0100 0111 1011

补码1000 0101 0111 1011

i)char 1Byte

无符号数[0,255] ---- [0,2^8-1]

有符号数 [-2^7,2^7-1]

[0000 0000 ----- 0111 1111] ----- [0,2^7-1]

[1111 1111 ----- 1000 0000] ------ [-2^7,0]

1000 0000 ------> 1111 1111 -----> 1 0000 0000 -0的补码 1000 0000 规定 1000 0000是-128的补码,-128没有原码和反码,-128补码的最高位,既是符号位也是数据位。

127 补 0111 1111 + 1 补码0000 0001 = 1000 0000

1 0000 0001

-1 1111 1111

0000 0001

1111 1111

0000 0000

计算机中数据存储的时候看的是数值(有无符号)

取出数据,看类型;

 

ii)short 2Byte 16bit

无符号数[0,2^16-1]

有符号数 [-2^15,2^15-1]

正数[0,2^15-1]

负数[-2^15,0]

1000 0000 0000 0000

iii)int 4Byte 32bit

无符号数[0,2^32-1]

有符号数 [-2^31,2^31-1]

正数[0,2^31-1]

负数[-2^31,0]

1000 0000 0000 0000 0000 0000 0000 0000

补码是通过模运算得来的。

练习:

124,原码、反码和补码0111 1100

-35:1010 0011 -----> 1101 1100 ----->1101 1101

-126:1111 1110 -----> 1000 0001 ------> 1000 0010

-96:1110 0000 ----> 1001 1111 -----> 1010 0000

-24:1001 1000 ------> 1110 0111 ------> 1110 1000

-123:1111 1011 ------> 1000 0100 ------> 1000 0101

-115:1111 0011 ------> 1000 1100 ------> 1000 1101

 

二、标准输入输出函数

【1】printf

 

 

 

 【2】sacnf

 ii)scanf在获取多个字符数据时,需要吸收垃圾字符

 

 【3】字符的输入函数getchar()

getchar()从终端 获取单个字符

getchar(); //语句本身的结果就是从终端获取的字符

char c;

scanf("%c",&c); //通过scanf终端获取c

c=getchar(); //通过getchar终端获取c

【4】字符的输出函数 putchar()

输出单个字符

 

三、运算符

【1】算术运算符

运算符

作用

+\-\*

两数相加、相减、相乘

/

如果左右两个操作数都是整形,就是取整运算,结果就是整形

如果有一个操作数是浮点型,结果就是浮点型,除数不能为0

%

要求:两个操作数必须是整形,取余,除数不能为0

【2】自增自减运算符

a++,++a,a--,--a

int a = 10; a++或者是a--表达式的结果仍然为10

++a,结果就是11

如果先看见运算符,结果就是运算后的值

如果先看见变量,结果就还是变量本身

 

练习:

1、使用带参宏实现,两数相乘*,两数相除/,两数模除%

 

  1. 整理思维导图
  2. 有以下变量求输出结果

signed char c = 178;

printf("%d\n",c);

printf("%u\n",c);

unsigned char d = -9;

printf("%d\n",d);

printf("%u\n",d);

并写出数据存储和取出的过程

3.求-57的原码、反码和补码

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值