1.类型的介绍
2.signed和unsigned
3.算数操作符:+ - * / %
4.赋值操作符:=和复合赋值
5.单目操作符:++ -- + -
6.强制类型转换操作符
7.printf的进一步介绍
8.scanf函数
1.类型的介绍
1.1什么是类型?
类型是用来形容变量的,变量就像一个容器,里面可以装数据,数据分为各种各样的类型,有字符型(char,是用来描述字符的),整型(int,是用来描述整数的),浮点型(float,double,是用来描述小数的),要装什么样的数据,就要什么样的变量,在变量前加上类型进行修饰,就可以得到该类型的变量。
1.2创建变量
第一步,给变量取名,这个名字随意,但必须是字母,数字和下划线(_)的组合,且第一个位置不可以是数字
第二步,说明变量的类型,变量就创建完成了,如图
1.3变量的初始化
在创建变量的时候赋值叫变量的初始化
注意看第8行的f,在小数结尾加上f表示该小数是float类型的,否则,编译器会默认该小数是double类型的。
1.4变量的赋值
不在刚创建变量的时候进行赋值,叫变量的赋值
1.5sizeof操作符
1.5.1sizeof的作用
sizeof是用来计算类型的大小或计算与sizeof最近的操作数的大小,大小的单位是字节,sizeof计算完后,会返回该类型或操作数的大小,sizeof的返回值类型是size_t,这种数据用%zd打印,size_t也是一种类型,该类型是用来描述无符号的整数的(就是非负整数)
1.5.3sizeof计算类型的大小
将类型写在sizeof右边,且必须在括号内
所以,int类型的数据占4个字节,char类型的数据占1个字节,flaot类型的数据占4个字节,double类型的数据占8个字节,size_t类型的数据占4个字节。
1.5.2sizeof计算操作数的大小
将操作数写在sizeof右边,sizeof计算最近的操作数的大小
操作数可以是常量,也可以是变量
常量1.1f被默认为float型,占4个字节
常量1.1被默认为double型,占8个字节
常量1被默认为int型,占4个字节
字符型常量会被默认为int型,占4个字节
第7行sizeof先与3结合,返回4,4+5=9,所以是9
第8行,3+5这个整体的类型是int型
所以,计算常量的大小没什么意义。
1.5.3不要写bug
sizeof是计算操作数大小的,不要在sizeof后面的括号里进行任何操作。
不要写出这种代码!!!
也不要写出这种代码,没有意义!!!
1.5.4sizeof的正确用法
一般只会用sizeof计算单个变量的大小,此时,括号可以加,也可以省略
1.5.5应用
求出double类型的变量的大小是int类型的多少倍?
这两种写法都是可以的
2.signed和unsigned
signed和unsigned关键字是用来修饰字符型和整型类型的,常见于修饰整型类型
在定义变量时,int前默认有一个signed,表示该变量所表示的值是有符号的,若在int前加上unsigned,使变量所表示的数扩大一倍(本来符号位是用来表示正负的,现在可以用于表示数值),但是,符号位变成了数值位,使变量不能装负数
unsigned int类型叫无符号整型,一般情况下,与size_t类型没什么区别。
unsigned int等价于unsigned,int是可以省略的
3.算数操作符:+ - * / %
它们都是双目操作符,需要两个操作数
注意:%运算符的两个操作数必须是整数,运算结果由第一个操作数的正负决定
4.赋值操作符:=和复合赋值
前面已经讲过变量赋值,现在讲讲连续赋值
看第六行,这是一种连续赋值,连续赋值是从右向左赋值
第一步:将常量5赋给b
第二步:常量b里装的是5,现在将b赋给a,实际上是将5赋给a
复合赋值
5.单目操作符:++ -- + -
5.1 +和-
在一个变量或常量前加+,没有影响
在一个变量或常量前加-,该变他的正负
5.2++和--
i++后,i的值加1,i++这个整体表示i+1以前的值
++i后,i的值加1,++i,的这个整体表示i+1之后的值
同理,可以类比出--的效果
6.强制类型转换操作符
(类型),这就是强制类型转换操作符
什么样的变量装什么样的数据,如果强行将其他类型的数据强行放入该变量内,编译器会报警告
我们可以用强制类型转换操作符,将数据的类型改变,
这样,1.1f就是整型数据了,当然整形数据是不能表示小数的,小数点后面的会被消掉
7.printf的进一步介绍
7.1重新认识一下printf
看如下代码
c语言遇到格式说明符,会以该格式说明符所表示的形式打印对应逗号后面的数据,第N个格式说明符对应第N个逗号后面的数据
第一个格式说明符%d将第一个逗号后面的12以整型的方式打印,接着打印drew rew遇到%s,将第二个字符串以%s的形式打印接着打印,遇到\0,打印彻底结束(在第一个字符串里遇到\0,标志这第一个字符串打印结束,第一个字符串打印结束标志着printf打印结束)
直接从第三个格式说明符开始看,%s从d开始打印,打印到s,遇到\0,%s,打印结束,接着打印w遇到\0(第一个字符串的末尾也有一个\0)。
格式说明符大全
7.2怎么打印可以使其看起来更整齐?
设置最小字符宽度,如果一个数的位数不够,就会用空格补上
方法:在%后面加上一个数字,该数字表示最小字符宽度
图中6个数字中位数最大的有5位,所以让每个数的最小字符宽度都是5就可以了
编译器是默认右对其的,可以在%和5之间加 - ,使其变为左对齐
7.3限定小数位数
编译器默认保留6位,如果我们只想保留2位
只需在字母(f)前面写个小数点,在小数点和字母之间卸下想保留的位数即可
7.4限定输出字符串
我们如果只想输出字符串的前两位,只需在字母(s)前面写个小数点,在小数点和字母之间卸下想保留的位数即可
8.scanf函数
这里的%d也是格式说明符,表示以什么样的格式输入,最后,输入的数据会传给对应的变量
&:取地址操作符,可以取出变量的地址。可见,scanf函数是对地址进行操作,现在只需要知道,要在欲操作的变量前要加&符号就可以了!
scanf输入多个数据
一般情况下,scanf不会读入空格,所以输入两组数据时,可以用空格隔开
但是吧,空格也是字符,在输入字符时,会出现这样的效果
实际上,我们是将空格字符输入到了字符变量b中,导致输入错误
那怎么解决呢?
不打空格直接输(%c一次只能读一个字符)