C语言基础2

C语言中的数据类型

基本类型

  • 数值类型
    • 整型
      • 短整型:short
      • 整型:int
      • 长整型:long
      • 长长整型:long long
    • 浮点型
      • 单精度:float
      • 双精度:double
    • 字符类型:char
  • 自定义/构造类型
    • 结构体:struct
    • 共用体:union
    • 枚举:enum
  • 指针类型:*
  • 空类型:void

常量与变量

在C语言中的表现形式是常量与变量。

常量

常量:在程序执行过程中其值不能改变的量称之为常量。

数值常量

1.整数常量

  • 二进制常量:以0b开头,由0,1两个数字构成

举例:0b1111、0b0110、0b01110101

  • 八进制常量:以0开头,由0~7八个数字构成

举例:012345、07654、-075

  • 十进制常量:默认,由0~9共十个数字构成

举例:1234、9876、-2564

  • 十六进制常量:以0x开头,由0~9,A-F共16个字符构成,一般用于嵌入式开发

举例:0xFFFFFF、0xFFFF00

2.小数常量

单精度:常常给单精度的数值后加F作为标记

举例:12.24F、-45.4444F

双精度:默认就是双精度

举例:12.24、-45.4444

字符常量

用单引号 ' '引起来的单个字符

举例:'a'、'1'

注意:'a'——字符,'马'——错误

转义符:

'\n':换行符

'\t':制表符

'\\':反斜线,\

'\0':0字符对应的ASCII码值是0

符号常量

使用 #define 定义的宏

举例:

字符串常量

使用“...” 引起来的字符序列,称之为字符串常量

注意:C语言常量是支持字符串的,C语言变量不支持字符串(需要字符数组或者字符指针进行模拟)

系统自动为字符串常量加上结尾符“\0”,使所占内存单元多一个,但字符串常量的长度不变,可用

sizeof( )运算符来测量。

空常量

用于给指针变量作为默认值初始化:int *p = NULL;

注意:

*前面是常量或者变量,此时*是数学运算符乘号,*前面是数据类型,此时*表示指针

补充

长整型一般在数值后加L 或者l ;长长整型一般在数值后加LL 或者ll

变量

说明

在程序执行过程中可以改变的量称之为变量。

变量是内存中一块用来存储数据的空间。

变量由变量名+变量值构成。通过变量名可以存放和获取变量值。

变量定义格式

举例:

变量名的命名要符合下列两个规则

变量名必须以字母或下划线开头,后面可以跟若干个字母、数字或下划线,如:max_width

变量名不能与C语言中已经存在的标识符重名,也就是关键字和保留字不能作为变量名

变量名、变量值、变量所占存储单元之间的关系

注意:在C语言中,要求对所用到的变量使用前必须先强制定义,即:先定义,后使用。

扩展

常见的字符编码

ASCII:1个字符等于1个字节,总共256个字符,针对程序内部

GBK:1个字符等于2个字节,表示简体、繁体及其符号。“。表示:\xced2

Unicode:四个字节表示:全球统一 编码,囊括了全世界所有的字符。表示:\u6211

UTF-8:长度变化的字符集,是对Unicode字符集的优化,提高效率,表示:\xe68891

ISO-8859-1 :这个是西欧语言字符集
如果代码中有字符乱码 --- 编码和解码的字符集不一致
解决方案:
1. 修改成一致的编码
2. 换成英文或者数字,毕竟只有中文才会乱码

进制转换

我们目前接触到的进制有 二进制、八进制、十进制、十六进制

八进制整型常量:以0(数字0)为前缀,其后由0到7的数字组成

十六进制整型常量:以0x或0X为前缀,其后由0到9的数字和A到 F(大小写均可)字母组成

其他进制 转 十进制: 按权相加

1. (1234)10 = 4 * 100 + 3 * 101+2 * 102 + 1 * 103

2. (0x1234)16 = 4 * 160 + 3 * 161 + 2 * 162 +1 * 163

十进制 转 其他进制:

辗转相除法:将需要转换的数据不停的除以转换的进制数,直到商为0

  1. 十进制转二进制:

2.十进制转八进制:

八进制 转 十六进制:

借助于二进制,将八进制转换为二进制,将二进制转换为十六进制

十六进制 转 八进制:

借助于二进制,将十六进制转换为二进制,将二进制转换为八进制。

有符号数和无符号数

在C语言中,整数是可以带符号的(有符号,signed)或不带符号的(无符号,unsigned。这两种类型的整数在内存中以二进制形式表示。并使用不同的模式。

有符号数(Signed Numbers)

有符号数是来表示正数、负数、0的整数类型。在内存中,有符号数使用最高位(通常是符号位) 来表示正负。如果最高位为0,表示这个数是正数或0,如果最高位为1,表示这个数是负数。其余位用于表示数值本身。

举例:例如一个8位有符号整数可以表示的范围是-128~127,这是因为1位用于表示符号(正或负)

注意:有符号位是默认的,在C语言中,基本整数类型如int,short,long默认为有符号数,除非明确指定为无符号。

举例:

无符号数(Unsigned Numbers)

无符号数是只能表示非负整数的数据类型。在内存中,无符号数不使用符号位,所有位都用于表示数值。因为,无符号数的范围比有符号数的范围更大。

注意:在C语言中,通过关键字后添加unsigned。来指定无符号类型,如unsigned int、unsigned short。。。

举例:例如一个8位无符号整数可以表示的范围是没有符号位0~255,这是因为所有8位都用来表示数值,没有符号位。

原码、反码和补码

原码:是最简单的机器数表示法,用最高位表示符号位,其他位存放该数的二进制的绝对值

反码:正数的反码和原码一致;负数的反码就是它的原码除符号位外,按位取反

补码:正数的原码、反码、补码都一致;负数的补码等于反码+1

C语言32个关键字

auto  default  float  register  struct  volatile break do for return switch while case double goto short typedef char else if signed union const enum int sizeof unsign continue extern long static void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值