C语言:变量的定义、存储、打印
一、C语言变量
???(1)、定义格式:<存储类型> <变量类型> 变量名;
??????存储类型(6个):
????????auto??register??extern??static??volatile??const
??????一般可以先不用管存储类型,直接: <变量类型> 变量名;
???????char?a;
???????int?tt;
???????注:(1)定义变量时,变量名必须只能以数字,字母下划线组成,且不能以数字开头。
????????例如:1ttw(×)??ww%(×)
???(2)、变量名不能与关键字重复。C语言中有32个关键字。
??????6个存储类型:?auto?register?extern?static?volatile?const
??????12个变量类型:?void?char?short?int?long?struct?union?enum?float?double?signed?unsigned
??????1个类型重定义:?typedef
??????1个 sizeof 求类型大小的关键字
??????12个控制语句:?if else ? switch case ? do while ? goto ? for ? return ? continue ?break ? default
???????注:在C语言中有32个关键字中,没有define。
???(3)变量名取名字时,尽量要做到见名知意。
???(4)C语言中了,变量名区分大小写。
二、变量存储数据的能力:
???char (8bit)(-128-----127)
???0111 1111(2^7-1=127)
???1000 0000(-128)
???问题:为什么最小值不是:1111 1111呢?
?????答案:因为1111 1111的值是-127,没有1000 0000的-128小。
??????1??? 0000000
??????|????|
?????符号位??数据位
??????1:代表负数
??????0:代表正数
?????unsigned char?(0 ---255)
??????0000 0000 都是数据位
??????1111 1111
?????short:(2^15-1 ------- -(2^15))
?????unsigned short :(0---65535)
?????int:(2^31-1 ------ -(2^31))
三、变量的存储的方式
???在Linux操作系统中,数据是以补码的形式存放的。
????char类型数据:
?????源码:?????????????????????1000 0101(源码)
?????反码:(对源码的除了符号位之外,其它位取反)??1111 1010(反码)
?????补码:(在反码的基础上加1)???????????1111 1011(补码)
?????注:正数的源码,反码,补码是一样的。
????char类型:
??????128 =
?????????1000 0000(源码)
?????????1111 1111(反码)
???????-----------------溢出---------------------------
?????????1000 0000(补码)(-128)
?????即:补码转源码:对补码的除了符号位之外,其它位取反,再加1
四、数据打印的格式:
???%c 打印的字符
???%d 打印的整数
???%ld 打印长整型
???%lld 打印长长整形
???%f 打印实型(默认打印小数点后6位(也可通过 .4%f 来限制打印的小数点后的位数))
???%g 打印实型小数点后的(最多5位)有效数据的位
???%Lf 打印long double类型的
???%s 打印字符串类型
???对于short类型,没有规定的打印类型
???%o 以八进制打印
???%#o 以八进制打印(并显示八进制的前缀)
???%x 以十六进制打印
???%#x 以十六进制打印(并显示十六进制的前缀)
???%p 打印地址(一般与 & 取地址符 配合使用)