C语言 | 【02】基础(数据类型、关键字、进制)

数据类型

常量与变量

关键字

数据类型char short int long float double unsigned signed struct union enum void
控制语句if else switch case defalut for do while break continue goto return
储存类auto extern register static const
其他sizeof typedef volatile

数据类型的作用:编译器预算对象(变量)分配的内存空间大小
在这里插入图片描述
变量的定义数据类型 变量名【标识符】= 值

规则

  • 字母、数字、下划线
  • 不能以数字开头、不能是关键字
  • 区分大小写

特点

  • 变量在编译时为其分配相应的内存空间
  • 通过名字或地址访问相应内存

常量的定义const 数据类型 常量名 【无法改变值】 | #define 常量名 值

注意

  • #define 是通过值来匹配数据类型【宏定义】
  • const 修饰的常量是不安全,可通过指针来修改

进制

二进制

特点逢二进一

符号具体含义
bit(比特)一个二进制代表一位,一个位只能表示0或1两种状态。数据传输是习惯以位(bit)为单位
Byte(字节)一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。数据存储是习惯以字节”(Byte)为单位
WORD(双字节)2个字节,16位
DWORD两个WORD,4个字节,32位
1b1bit,1位
1B1Byte,1字节,8位
1k,1K1024
1M(1兆)1024k,1024*1024
1G1024M
1T1024G
1kb(千位)1024bit,1024位
1KB(千字节) 1024Byte,1024字节
1Mb(兆位)1024Kb=1024*1024bit
1MB(兆字节)1024KB = 1024 * 1024Byte
十进制

十进制转二进制除二反序取余法
在这里插入图片描述

二进制转十进制权值法
在这里插入图片描述
八进制转十进制除八反序取余法 类似于前面的二进制
八进制转二进制八四二一法则

二进制转八进制即逆回去就阔以了

八进制二进制
00
11
210
311
4100
5101
6110
7111
101000
在这里插入图片描述
十六进制转二进制

在这里插入图片描述

程序中的进制

八进制:开头加0
十六进制:开头加0X

程序输出

  • %o:八进制
  • %x:十六进制
  • %X:十六进制大写输出

数值存储方式

原码

特点

  • 最高位做为符号位,0表示正,为1表示负
  • 其它数值部分就是数值本身绝对值的二进制数
  • 负数的原码是在其绝对值的基础上,最高位变为1下面数值以1
十进制数原码
+150000 1111
-151000 1111
+00000 0000
-01000 0000

原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两个正数相减不同符号数相加时,必须比较两个数哪个绝对值大,才能决定减谁,才能确定结果是正还是负,所以原码不便于加减运算

反码
我们用第一位表示符号(0为非负数,1为负数),剩下的位,【非负数保持不变,负数按位求反】:

[+8] = [00001000]原 = [0000 1000]反

[-8] = [10001000]原 = [1111 0111]反

补码:正数的补码等于他的原码
补码

特点

  • 计算机系统中,数值一律用补码来存储
  • 对于正数,原码、反码、补码相同
  • 对于负数,其补码为它的反码加1
  • 补码符号位不动,其他位求反,最后整个数加1,得到原码

负数的补码等于他的原码自低位向高位,尾数的第一个‘1’及其右边的‘0’保持不变,边的各位按位取反符号位不变

十进制数补码
+150000 1111
-151111 0001
+00000 0000
-00000 0000

在这里就不过多介绍,阔以看看这边文章 原码、反码、补码

位的位移

C语言 | 【耗费一夜总结三本C语言系列】之 位及进制的用法

关键字

sizeof

不需要包含任何头文件,只是计算数据类型的大小【字节】
返回值为size_t【该类型在32位系统下是unsigned int
char【1】 < short【2】< int long float【4】< double【8】

int

输出方式

  • %d:输出一个有符号的10进制int类型
  • %o:输出八进制的int类型
  • %x:输出十六进制,字母以小写输出
  • %X:输出十六进制,字母大写输出
  • %u:输出一个10进制的无符号数

输入方式

scanf("%d", &a)

注意

  • 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然C语言标准中没有明确规定整型数据的长度,但1ong类型整数的长度不能短于int类型,short 类型整数的长度不能短于int类型。
  • 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。
long、short
整形常量所需类型
6int
6l, 6Llong类型
6ll, 6LLlong long类型
6u, 6Uunsigned int
6ul, 6ULunsigned long
6ull, 6ULLunsigned long long

打印格式

  • %hd: 输出short类型
  • %l:输出long类型
  • %ll:输出long long类型
  • %hu:输出unsigned short类型
  • %u:输出unsigned int类型
  • %lu:输出unsigned long类型
  • %llu:输出unsigned long long类型
char

定义

  • 字符型变量用于存储一个单一字符,在C语言中用char表示,其中每个字符变量都会占用1个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(’)把字符括起来。
  • 字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的ASCII 编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。

输出方式

prinft("%c",a)
putchar('')

输入方式

getchar("")
scanf("%c", &a)

ASCII

  • AI非打印控制字符:ASCI表上的数字0-31分配给了控制字符,用于控制像打印机等一些外围设备。
  • ASCI打印字符:数字2-126分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。数字127代表Del命令

转义字符

转义字符含义ASCII
\a警报007
\b退格,将当前位置移到前一列008
\f换页,将当前位置移到下页开头012
\n换行,将当前位置移到下一行开头010
\r回车将当前位置移到本行开头013
\t水平制表009
\v垂直制表011
\\代表一个\字符092
\'代表'039
\"代表一个"034
\?代表一个?063
\0数字0000
\ddd八进制转义字符,d范围0~73位八进制
\xhh16进制转义字符,h范围0-9,a-f,A-F3位十六进制

数值溢出

当超过一个数据类型能够存放最大的范围时,数值会溢出。
有符号位最高位溢出的区别:符号位溢出会导致数的正负发生改变,但最高位的溢出会导致最高位丢失。

  • char | 1字节 | -128到127
  • unsigned char | 1字节 | 0到255
float、double

区别

float:7位有效数字
double:15~16位有效数字
e3:10的三次幂

类型限定符

extern:声明一个变量,但没有建立存储空间
const:定义一个常量,不能修改
volatile:防止编译器优化代码
register:定义寄存器变量,提高效率。若CPU空闲则有效。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值