C语言的数据表现形式及其运算
数据表现形式
一门语言都有自己所支持的数据表示形式,比如python里的字典啊列表啊等等啊,这里简单的讲下c里的。
常量与变量
首先啊,我们要了解,量为啥会存在,在我们生活中啊有各种各样的量啊,比如身高啊,体重啊,那你想想身高体重是怎么来的呢,小枫在路上看见一个漂亮的姑凉,想给自己的好兄弟小明描述一下,小枫说:170,48。小明说你在说你马麦匹,对不对,你光说一个170,48天知道你在说啥,这就引出了变量名对不对,身高,体重这就是变量名,而身高里的数就是变量。那常量是什么呢,很好理解啊,不变的就是常量,比如密度,诶这个时候又有兄弟要说,密度也会变啊气态固态液态不一样啊,那我真是********。反正就这样理解,为了大家更好的描述或者使用量,产生了变量变量名等。
关于c常量与变量的定义
变量名啊只能是字母或者下划线开头大小写随意啊
当然变量里可以包含数字字母和下划线,其他的一些花里胡哨的玩意是不行的
举一点例子
xf
Xf
XF
_xf
_XF
_xf
—xf—
_x_f
12xf
聪明的你一定一下就看出来了哪些变量名有问题把
然后就是变量名字不能和关键字一样,关键字就是for if啊之类的
然后就是常量
常量定义给你变量差不多
就是定义前要加一个#define
格式差不多是
#define 常量名 常量值
当然c语言的变量以及常量都是有数据类型的就是下列几种
字符型
字符型是什么呢
就是字母啊中文啊这些非数字的字符
比如"abcd"这就是字符串
'a'这就是字符a
字符在c语言中声明为char型
什么意思呢
比如小枫喜欢上了一个人,他叫小飞飞,那么小枫如何把小飞飞记在心里呢,他需要跟他的心说:char mylove = "小飞飞"
没错!
char mylove = "小飞飞"
这一句就是声明字符串变量或者定义字符串变量的语句
"小飞飞"就是变量值mylove就是变量名
大概的格式就是
char 变量名 = 变量值
在变量值的这个位置要注意
当是一个字符的时候要用单引号括起来''
当他是字符串时就要用双引号""
整形
整形是什么呢,就是整数你懂把,1,2,3,4这种
这个的声明或者定义格式就是
int 变量名 = 变量值;
很简单是吧
值得注意的是c语言中的整形是允许10,8,16进制定义的
比如int i= 045 这就表示八进制里的45
又比如 int i= 0x123 这就是表示16进制里的123
10进制就是一般的定义了
然后其实整形还有
long int
还有
short int
这个两个和int有啥区别呢
请看那个我的另一篇文章里面有讲(这不是广告!)
实型(浮点型)
实型几乎就是浮点型把,说白了就是小数,
实型就是两种一种是
float
一种是
double
这两种有啥区别呢
请看那个我的另一篇文章里面有讲(这不是广告!)
定义和声明和上面两个如出一辙:
float i = 1.2;
double i = 1.5;
这种
运算符
说完了量就要讲量的计算了,也就涉及到运算符了
算数运算符
算数运算符我能想到的就是
+ 加
- 减
* 乘
/ 求商
% 求余
++ 自增
-- 自减
这些运算符大家应该都懂是啥意思
稍微有点问题的就是关于%
%是求余,这个运算符的运算对象只能是整形
然后再就是运算顺序的问题了
一般计算过程就是从左向右依次计算如果遇到括号就先算括号内
然后就是++以及--的位置
就比如
#incloud<stdio.h>
int mian(){
int i = 10;
printf("%d",1+3+(++i)+(i++)+(--i))
}
这个会打印出什么呢
应该是1+3+11+11+11亲爱的你算对了嘛
怎么理解这个++呢
很简单,++在前先加后参与运算,++在后参与运算后再加
赋值运算符
赋值运算符的话
其实我的理解是只有==这一个
其他的都是他的变种,都是小老弟
什么+=
*=
-=
/=
%=
都是先计算后赋值
比如i += 2
怎么算呢
先计算i+2
再把i+2赋值给i
这样想++,--也可以是赋值运算符
赋值运算符是从右往左计算的别弄反了,仍然是括号优先级最高
逻辑运算符
c里的逻辑符
&& 短路与
|| 短路或
! 非
先说&&
这个是怎么运作的呢
比如表达式A和B
A&&B 如果A是真 B也是真 那么A和B都会执行,且返回的结果为1
如果A是真 B也是假 那么A和B都会执行,且返回的结果为0
如果A是假 那么只会执行A,返回结果是0 不执行B 这就是为啥是短路与了
就好比小枫和小飞飞谈恋爱
两个人都喜欢彼此诶
小枫给小飞飞发消息小飞飞就会回1
假如某天吵架了 小飞飞生气了暂时不喜欢小枫了
那小枫给小飞飞发消息,诶小飞飞生气,不回了,就是返回0
再假如,小枫说你不回我也不发了,who怕who
那小枫直接不发消息了,那就算小飞飞想回消息,也不知道回啥,所以返回0
再说||
这个用表达式怎么表示呢
比如A||B 如果A真 那只执行A不执行B 并返回1
如果A为假 执行B 如果B也为假 那就返回0
如果A为假 执行B 如果B为真 那就返回1
再来举个例子
小枫参加扇大B兜比赛
小枫先手,上去对着别人就是一个大B兜,直接把别人扇晕了 所以只有小枫扇别人
没有别人扇小枫 小枫获胜 返回1
第二把还是小枫先手, 同样上去就是一个大B兜,诶这次对手比较牛,顶住了,这时候别人要扇回来,啪反手一个大B兜扇到小枫脸上,小枫也牛卧槽,想着下面女朋友看着在怎么能不行,这样两个人就平局就要进行下一把没有胜者 所以返回0
第三把还是小枫先手,对手很懵逼,殊不知是小枫用两杯奶茶收买了裁判小明,
于是还是小枫先扇,上去就是一个大B兜,对手直接咬牙,脸通红通红的,但是他顶住了,这个时候助手说他安检没过,因为他有钢铁般的意志,轮到他扇小枫了,他带着他钢铁般的意志,一个大B兜扇向小枫,小枫直接G,于是胜者是对手 返回1
这个时候对手摘下脸皮,没想到把,爷不要脸了!
!这个就不用多说了就是取反
相信大家都有深刻的记忆了
这个是从左向右执行的除了!
!是有一个滞后的
位运算符
位运算符是什么呢
这就要涉及到二进制了
一般位运算都是八位运算就是
0000 0000
运算符有
^按位异或
>>左位移
<<右位移
&按位与
|按位或
~按位取反
这个理解就可能不好理解了
但是也好理解
比如一个数3>>2这个怎么算呢
首先把3转换成八位二进制
0000 0011
然后将这个数字全体往右移两位,空出来的位置补0
0000 0000 11对不对然后只保留8位从前开始数
最后结果就是
0000 0000
所以3>>2 = 0
然后将3^1
这个同样啊先转为2进制
0000 0011
0000 0001
然后^是每一位进行比较,如果相同返回0,不同返回1
所以结果就是
0000 0010
所以3^1 = 2
剩下的都差不多这样理解了
真的困了!不懂请联系18571782759
@2022.4.17