C语言基础学习笔记--02

C语言基础学习笔记--02

    • 数据类型
  • 1.1 C语言关键字
    • 数据类型关键字(12个):
    • 控制语句关键字(12个):
    • 存储类型关键字(5个):
    • 其他关键字(3个):
  • 1.2 数据类型
    • 常量与变量
  • 1.3 进制
    • 二进制
    • 八进制
    • 十六进制
    • C语言如何表示相应进制数
  • 1.4 计算机内存数值存储方式
    • 原码
    • 反码
    • 补码
  • 1.5 整型
    • 整型变量的定义和输出
    • 整型变量的输入
    • short、int、long、long long
  • 1.6 字符型
    • 字符变量的定义和输出
    • 字符变量的输入
  • 1.7 实型(浮点型)
  • 1.8 字符串格式化输出和输入
    • 字符串常量
    • printf函数和putchar函数
    • scanf函数与getchar函数
  • 1.9 ASCII表

数据类型

#本文章为学习笔记,如有不足还请多多包涵。同时欢迎各位一起学习交流。
C语言基础学习笔记–01

1.1 C语言关键字

C语言关键字, C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。
C语言基础学习笔记--02_第1张图片
1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:![在这里插入图片描述]
在这里插入图片描述
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:
在这里插入图片描述

数据类型关键字(12个):

char: 声明字符型变量或函数
short : 声明短整型变量或函数
int: 声明整型变量或函数
long: 声明长整型变量或函数
float: 声明单精度浮点型数据或函数
double: 声明双精度浮点型数据或函数
unsigned: 无符号数据类型,修饰整型数据
signed: 有符号数据类型,修饰整型数据
struct: 声明结构体变量或函数
union: 声明共用数据类型
enum: 声明枚举类型
void: 声明无返回值或者无参数的函数,声明无类型的指针

控制语句关键字(12个):

if: 条件语句
else: 条件语句否定分支(与 if 连用)
switch: 用于开关语句
case: 开关语句分支
default: 开关语句中的“默认”分支
for: 一种循环语句
do: 循环语句的循环体
while: 循环语句的循环条件
break: 跳出当前循环
continue: 结束当前循环,开始下一轮循环
goto: 无条件跳转语句
return: 子程序返回语句(可以带参数,也可不带参数)

存储类型关键字(5个):

auto: 声明自动变量
extern: 声明变量或函数是在其它文件或本文件的其他位置定义
register: 声明寄存器变量
static: 声明静态变量
const: 声明只读变量

其他关键字(3个):

sizeof: 计算数据类型或变量长度(即所占字节数)
typedef: 用以给数据类型取别名
volatile: 说明变量在程序执行中可被隐含地改变

1.2 数据类型

常量与变量

在计算机语言中,数据有两种表达方式:常量和变量。
常量。在程序运行过程中,其值不能被改变的量称为常量。常用的常量有以下几类:

  • 整型常量

  • 实型常量。有两种表现形式:十进制小数形式、指数形式。

  • 字符常量。有两种形式的字符常量:普通字符(用单引号撇起来的一个字符)、转义字符
    C语言基础学习笔记--02_第2张图片

  • 字符串常量。用双引号把若干个字符括起来

"Hello World"
  • 符号常量。用#define指令,指定用一个符号名称代表一个常量。
#define PI 3.1415926

变量。变量代表一个有名字、具有特定属性的一个存储单元。在程序运行期间,变量的值可以改变的。 变量必须先定义后使用

常变量。常变量与常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。常变量是由名字的不变量,而常量是没有名字的不变量。

标识符。在计算机高级语言中,用来对变量、符号常量名、函数、 数组、类型等命名的有效字符序列统称为标识符。C语言规定标识符只能有字母、数字、下划线3中字符组成,且第一个字符必须为字母或下划线。

#include 

int main()
{
	//声明一个变量a,a在这里没有建立存储空间
	int a;
	a = 10;	//err, 没有空间,就不可以赋值

	int b = 10;	//定义一个变量b,b的类型为int,b赋值为10

	return 0;

1.3 进制

进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

二进制 八进制 十进制 十六进制
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。

术语 含义
b bit(比特)一个二进制代表一位,一个位只能表示0或1两种状态。数据传输是习惯以“位”(bit)为单位。
B Byte(字节)一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。
kb 千字节 1KB=1024B
M 兆字节 1MB=1024KB
G 吉字节 1GB=1024MB

十进制转化二进制的方法:用十进制数除以2,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。
C语言基础学习笔记--02_第3张图片
28的二级制数为 11100

八进制

八进制,Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢8进1。一些编程语言中常常以数字0开始表明该数字是八进制。八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此常应用在计算机语言中。
十进制转化八进制的方法:
用十进制数除以8,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。
C语言基础学习笔记--02_第4张图片
70的八制数为 106

十六进制

十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F表示。其中A—F表示10—15这些称作十六进制数字。

C语言如何表示相应进制数

#include 
int main()
{
	int a = 123;		//十进制方式赋值
	int b = 0123;		//八进制方式赋值, 以数字0开头
	int c = 0xABC;	//十六进制方式赋值

	//如果在printf中输出一个十进制数那么用%d,八进制用%o,十六进制是%x
	printf("十进制:%d\n",a );
	printf("八进制:%o\n", b);	//%o,为字母o,不是数字
	printf("十六进制:%x\n", c);

	return 0;
}

1.4 计算机内存数值存储方式

原码

一个数的原码(原始的二进制码)有如下特点:

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

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

反码

  • 对于正数,反码与原码相同
  • 对于负数,符号位不变,其它部分取反(1变0,0变1)
十进制数 反码
+15 0000 1111
-15 1111 0000
+0 0000 0000
-0 1111 1111

反码运算也不方便,通常用来作为求补码的中间过渡。

补码

在计算机系统中,数值一律用补码来存储。
补码特点:

  • 对于正数,原码、反码、补码相同
  • 对于负数,其补码为它的反码加1
  • 补码符号位不动,其他位求反,最后整个数加1,得到原码
十进制数 补码
+15 0000 1111
-15 1111 0001
+0 0000 0000
-0 0000 0000

1.5 整型

整型变量的定义和输出

打印格式 含义:
%d 输出一个有符号的10进制int类型
%o 输出8进制的int类型
%x 输出16进制的int类型,字母以小写输出
%X 输出16进制的int类型,字母以大写输出
%u 输出一个10进制的无符号数
#include 

int main()
{
	int a = 123;	//定义变量a,以10进制方式赋值为123
	int b = 0456;	//定义变量b,以8进制方式赋值为0567
	int c = 0xabc;	//定义变量c,以16进制方式赋值为0xabc

	printf("a = %d\n", a);
	printf("8进制:b = %o\n", b);
	printf("10进制:b = %d\n", b);
	printf("16进制:c = %x\n", c);
	printf("16进制:c = %X\n", c);
	printf("10进制:c = %d\n", c);

	unsigned int d = 0xffffffff; //定义无符号int变量d,以16进制方式赋值
	printf("有符号方式打印:d = %d\n", d);
	printf("无符号方式打印:d = %u\n", d);
	return 0;
}

整型变量的输入

#include 
int main()
{
	int a;
	printf("请输入a的值:");

	//不要加“\n”
	scanf("%d", &a);

	printf("a = %d\n", a); //打印a的值

	return 0;
}

short、int、long、long long

C语言基础学习笔记--02_第5张图片

打印格式 含义:
%hd 输出short类型
%l 输出long类型
%ll 输出long long类型
%hu 输出unsigned short类型
%lu 输出unsigned long类型
%llu 输出unsigned long long类型

1.6 字符型

字符变量的定义和输出

字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节。在给字符型变量赋值时,需要用一对英文半角格式的单引号(’ ')把字符括起来。

字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的 ASCII 编码放到变量的存储单元中。char的本质就是一个1字节大小的整型。

#include 

int main()
{
	char ch = 'a';
	printf("sizeof(ch) = %u\n", sizeof(ch));

	printf("ch[%%c] = %c\n", ch); //打印字符
	printf("ch[%%d] = %d\n", ch); //打印‘a’ ASCII的值

	char A = 'A';
	char a = 'a';
	printf("a = %d\n", a);		//97
	printf("A = %d\n", A);	//65

	printf("A = %c\n", 'a' - 32); //小写a转大写A
	printf("a = %c\n", 'A' + 32); //大写A转小写a

	ch = ' ';
	printf("空字符:%d\n", ch); //空字符ASCII的值为32
	printf("A = %c\n", 'a' - ' '); //小写a转大写A
	printf("a = %c\n", 'A' + ' '); //大写A转小写a

	return 0;
}

字符变量的输入

#include 

int main()
{
	char a;
	printf("请输入a的值:");

	//不要加“\n”
	scanf("%c", &a);
	printf("a = %c\n", a); //打印ch的字符

	return 0;
}

1.7 实型(浮点型)

实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。在C语言中, 浮点型变量分为两种: 单精度浮点数(float)、 双精度浮点数(double), 但是double型变量所表示的浮点数比 float 型变量更精确。

数据类型 占用范围 有效数字范围
float 4字节 7位有效数字
double 8字节 15~16位有效数字

1.8 字符串格式化输出和输入

字符串常量

  • 字符串是内存中一段连续的char空间,以’\0’(数字0)结尾。
  • 字符串常量是由双引号括起来的字符序列,如“china”、“C program”,等都是合法的字符串常量。
  • 字符串常量与字符常量的不同:
    C语言基础学习笔记--02_第6张图片
    每个字符串的结尾,编译器会自动的添加一个结束标志位’\0’,即 “a” 包含两个字符’a’和’\0’。

printf函数和putchar函数

  • printf是输出一个字符串,putchar输出一个char。

scanf函数与getchar函数

  • getchar是从标准输入设备读取一个char。
  • scanf通过%转义的方式可以得到用户通过标准输入设备输入的数据。

1.9 ASCII表

你可能感兴趣的:(笔记)