[C语言学习]C语言程序设计基础(二)[点击传送]
大家好这里是三岁,C语言是各类语言的基础,由于个人学习需要特别开设了C语言基础专题,内容不一定深入,都是基础知识,还是白话C语言,最简单的方式带领大家学习不是那么容易理解的C语言!(该系列应该每周末更新直到系列结束,有问题的及时留言,会马上修改!)
类型转换
在进行运算时,不同类型会转换成同一类型进行运算。一般情况都是低精度转换成高精度再进行计算。
从低到高进行转换是自动完成的,但是从高到低就不一定了。
一般情况从高到低要求高的值不高于低的值最大限度,不然就会出现精度损失。所以建议使用强制转换。
强制转换
利用强制转换运算,将一个表达式转换成所需要的类型。
//例如: (double)a //转换成双精度 (int)(x+y) //做x+y的值转换成整型 (float)(5%3) //把结果转换成浮点型
单目运算~多目运算
- 单目运算
主要的单目运算有++
、--
、!
自加运算符:++
;
a++或++a等同于 a+1
自减运算符:--
;
a–或--a等同于a-1
具体差异:点击查看
!
非运算符:等同于not
用于逻辑值取反(!10;!01)
- 双目运算
有两个操作数的运算。
例如:+
、-
、*
、/
、%
、>
、&&
……
需要两个运算数的
- 三目运算符
有3个运算数的运算
例如:?
、:
- 多目运算
有多个运算数的运算
逗号运算符,
逗号运算符
逗号运算符:把多个表达式用逗号进行连接自左往右进行计算最后输出最后一个值。
表达式的一般形式:
表达式1,表达式2,表达式3,……,表达式n
计算顺序:从左自右
从左自右逐个计算表达式,最后输出最后一个表达式的结果。
3+5,6*8 //结果=48
关系运算符
将运算符两边的值进行比较,输出的结果为布尔型(0,1)
符号 | 名称 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
运算等级:(<,<=,>,>=)相同且高于(==,!=)
表达式:
表达式1 关系运算符 表达式2
逻辑运算符
逻辑运算符共有三种分别是&&
、||
、!
逻辑运算最后的结果是0或1即布尔型
表达式:
表达式1 逻辑运算符 表达式2
逻辑与(&&
)相当于and
只有当两边的运算符的逻辑值都是1时最后的结果才是1
计算顺序:
①:计算表达式1,从逻辑上判断真假。
②:若表达式1为0,忽略表达式2的计算,整个逻辑表达式为0(叫做短路与)
③:若表达式1为1,继续计算表达式2的逻辑值,表达式2的逻辑值是多少最后的结果就是多少
详见下图:
逻辑或(||
)相对应or
只有当两边的运算符的逻辑值都是0时最后的结果才是0,有一个为1最后结果就是1
计算顺序:
①:计算表达式1,从逻辑上判断真假。
②:若表达式1为1,忽略表达式2的计算,整个逻辑表达式为1(叫做短路或)
③:若表达式1为0,继续计算表达式2的逻辑值,表达式2的逻辑值是多少最后的结果就是多少
详见下图:
- 逻辑非(
!
)相当于not
若!后面的逻辑值为1则最后的结果是0。
若!后面的逻辑值为0则最后的结果是1。
即取相反值。
逻辑运算真值表
A | B | !A | !B | A&&B | A||B |
真 | 真 | 假 | 假 | 真 | 真 |
真 | 假 | 假 | 真 | 假 | 真 |
假 | 真 | 真 | 假 | 假 | 真 |
假 | 假 | 真 | 真 | 假 | 假 |
位运算符
符号 | 含义 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 取反 |
<< | 左移 |
>> | 右移 |
图解按位运算符
左移
- 我们先把2转换为2进制“10”一共6位前面拿0补齐
我们把10往前移2位后面0补齐得到“001000”
得到结果8 - 右移(
>>
)
- 11的二进制右移其他的0补齐,得到的结果基本上就是了
自己画的图有问题的及时提哟!! - 按位与(
<<
)
按位或(|
)
按位异或(^
)
按位取反(~
)
?:表达式(条件运算)
表达式:
表达式1? 表达式2:表达式3
1:计算表达式1的逻辑值
2:如果表达式1逻辑值是1则计算表达式2的结果并输出
3:如果表达式1逻辑值是0则计算表达式0的结果并输出
类似于:
if(表达式1) { 表达式2; } else { 表达式3; }
各类计算符的优先级
输入输出语句
输出
主要的输入函数有putchar
和printf
putchar
:用于字符串的输出函数
printf
:格式输出函数
printf(格式控制,输出表列)
- 普通字符:
在输出中原样输出的内容。主要作用是作为输出数据的间隔,在显示中起到提示的作用。 - 格式说明符:
由%
和格式字符组成,作用是使输出的数据按照指点的格式输出。
printf函数格式字符
格式字符 | 说明 |
d | 带符号的十进制整型(正数不带符号) |
o | 八进制无符号整数 |
x,X | 十六进制整数 |
u | 无符号十进制整数 |
c | 输出一个字符 |
s | 输出字符串 |
f | 小数形式输出(字符串)最高6位小数 |
e,E | 指数形式输出 |
ld | 十进制 长整型 |
特殊格式
字符 | 说明 |
字母l | 在d,o,x,u前面,表示各种长整型 |
m(一个整数,在整数位 ) | 数据的输出列宽 |
n(一个整数吗,在小数位) | 数据输出的小数位数 |
- | 数据左靠齐 |
printf("%d",x)//输出整型x printf("%s",y)//输出字符串y printf("%.1f",z)//输出一个小数的浮点型 printf("%3.1f",i)//长度是3位小数位数是一位的浮点型 printf("%-8,1f",v)//左对齐长度是8小数位数是1
注:当m(长度)小于实际长度时自动忽略设置长度。以实际长度为准。
输入
getchar()
、scanf()
为主要的输入函数。
getchar()
:为字符输入函数
scanf()
:为格式输入函数
表达式
scanf(格式控制符,输入项地址列表)
注:变量的地址就是变量名前面加上地址操作符"&".
scanf函数格式字符
格式字符 | 说明 |
d | 按照有符号十进制整型输入 |
o | 按照八进制无符号整数输入 |
x,X | 输入十六进制整数 |
u | 输入无符号十进制整数 |
c | 输入一个字符 |
s | 输入字符串 |
f,e,E,g,G | 输入实数,可以是小数或指数形式 |
举例:
scanf("%d",&a)//输入一个整型 scanf("%s",&c)//输入一个字符串 scanf("%f",&b)//输入一个浮点型
多个输入:
scanf("%d%c",&a,&e)//输入一个整型一个字符 scanf("%s%d",&c,&d)//输入一个字符串一个整数 scanf("%f%s",&b,&f)//输入一个浮点型一个字符串
两个及以上输入时中间可以使用空格
、tab(制表符 )
、回车
进行间隔 输入后回车
进行确认输入。
如果在多个输入中间加上了一些奇奇怪怪的东西就需要注意
scanf("%d,%c",&a,&e)//输入值需要用,进行间隔
如果最后地址符没有添加最后的数据会无法读入或者直接报错。这些问题都需要警惕。
今天的资料就整理到这里了,非常感大家的关注,如果好就来个一键三连吧!