C语言笔记

C语言中的数据类型

常量与变量

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

常量

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

  1. 数值常量

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

举例:0b1111 0b0110  0b0110

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

举例:012345、07654   -075

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

举例:1234、9876、-87654

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

举例:0xFFFFFF、0xFFFF00

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

举例:12.24、-45.444F

    • 双精度:默认就是双精度
    • 举例:12.24、-45.4444
  • 字符常量

用单引号(英文)’’引起来的单个字符

举例:a 1

注意:a-字符,-错误

转义符:

\n:换行符

\t:制表符

\\:反斜线

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

  1. 符号常量

使用#define定义的宏

举例:定义-#define PI 3.1415926 定义Π,使用-2*PI

案例:

#include<stdio.h>

//定义一个端口号,宏定义使用大写+下划线命名法

#define PORT 3000

Int main()

{

printf(“http://localhost:%d\n”,PoRT);

return 0;

}
  1. 字符串常量

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

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

举例:printf(hello world!)、printf(“”)、printf(1)-数值常量、printf(1)-字符串常量

案例:

#include <stdio.h>

int main()

{

//字符串:指针表示

char *str 1 = “欢迎六位同学!”;

//字符串;数组表示

char str2[]= “欢迎六位同学!”;

char *str11=”欢迎六位同学!\0”;

printf(“%1d,%1d,%1d\n”,sizeof(str1),sizeof(str11),sizeof(str2));



return 0;

}
  1. 空常量

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

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

补充

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

Long a=90L

Long long b =99LL

练习题

#include <stdio.h>

/**

* 入口函数

*/

int main()

{

int num = 12;

num = 13;

printf(num); // 13 输出变量

printf("num"); // num 字符串常量,这个常量是隐式创建 "num" -> "num\0"

printf(12); // 12 数值常量,这个常量是隐式创建

printf("%d",90L); // 90 数值常量

}

变量

说明:

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

变量是内存中一块用来存储数据的空间,变量由变量名+变量值构成。通过变量可以存放和获取变量值。

变量定义格式

遍历数据类型 变量名列表;

举例:

//①声明变量并赋值(声明一块变量存储单元,并向这个空间存储一个初始值)

Int num = 5; //将5赋值给变量num,也就是将5赋值给变量num对应的内存单元

Int a= 3,b=4,c=5;

//②先声明一个变量,再给变量赋值(声明一块变量,暂时为空)

Int age;

age = 21;

//混合应用

Int count = 0;  //此时,count变量空间中存储的数据是1

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

  1. 变量名必须要以字母或下划线开头,后面可以跟若干个字母、数字或下划线,如max_width
  2. 变量名不能与C语言中已经存在的标识符重名,也就是关键字和保留字不能作为变量名

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

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

扩展

常见的字符编码

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

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

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

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

ISO-8859-1:这个是西欧语言字符集

如果代码中有字符乱码---编码和解码的字符集不一致

解决方案:

  1. 修改成一致的编码
  2. 换成英文或者数字,毕竟只有才会乱码

进制转换

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

其他进制转十进制:

按权相加

  1. (1234)10=4*+3*101+2*102+1*103
  2. (0x1234)16=4*160+3*161+2*162+1*163

十进制转其他进制:

辗转相除法:将需要转换的数据

  1. 十进制转二进制
  2. 十进制转换八进制

八进制转十六进制:

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

十六进制转八进制:

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

有符号和无符号数

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

  • 有符号数(signed Numbers)

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

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

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

举例:

signed int num = 12; //标准有符号位写法

Int num ==12;

  • 无符号数(unsigned numbers)

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

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

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

Unsigned int num = 12;//标准无符号位写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值