C 语言复习笔记

C语言介绍

我们不多逼逼,直接上 !!!

C语言属于编译型语言 (计算机语言分类)

C语言 运行的过程:
编译成 *.obj (编译器 把 *.c 文件 编译成 *.obj文件)
连接成 *.exe (链接器 把 *.obj 文件 链接成 *.exe文件)

C程序的一般 组成 (非全面的):
标号语句
复合语句
表达式语句
选择语句
迭代语句
跳转语句

关键字
标识符
运算符
数据

1 .#include 指令和头文件

#include 

上面的语句的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。
实际上。这是一种“拷贝——粘贴”的操作。
#include这是一条预处理器指令

2 . main()函数
main的标准写法void main(void)

3 .注释

// 这里是注释
/* 
 这里是注释
*/

4 .花括号、函数体和块

{
	...
}

5 .声明
要使用 某变量 、 某函数 或结构体等 必须先声明后才能调用

基本类型:
C 语言复习笔记_第1张图片
详见

实际数据长度(非标准长度!!! 视环境与机器 而定论 具体情况具体分析):
C 语言复习笔记_第2张图片

讨论 “__int64 与long long 的区别”(无兴趣可以无视):
https://blog.csdn.net/shiwei408/article/details/7463476

__int64 类型的输入与输出:

#include 
void test__int64IO();

void main(void){
	test__int64IO();
}

void test__int64IO(){
	// 测试 __int64 类型的 输入 输出
	__int64 x ;
	printf("请输入一个整数:");
	scanf("%I64d",&x);
	printf("%I64d\n",x);
}

6 .赋值

7 .printf() 函数
它是一个标准的输出函数

8 .return 语句
为提高可读性,我们还是要保持写return语句的习惯

int main(void){
	...
	return 0;
}

基本数据类型

整型:
ISO C规定int的取值范围最小为-32768~32767。这句话没有毛病它说的是最小,不是最大的规定!

不过,随着技术的发展,现在的个人计算机常见的是,long long占64位、long占32位、short占16位、int占16位或32位(依计算机的自然字长而定)。
原则上,这4种类型代表4种不同的大小,但是在实际使用中,有些类型之间通常有重叠(大小重叠 如下图的int long大小是重叠的)。

C 语言复习笔记_第3张图片

C 标准对基本数据类型只规定了允许的最小大小。
对于16位机,short 和 int的最小取值范围是[-32768,32767];
对于32位机,long的最小取值范围是[-2147483648,2147483647,];
对于unsigned short 和 unsigned int ,最小取值范围是[0,65535];
对于unsigned long ,最小取值范围是[0,4294967295];
long long类型是为了支持64位的需求(c99中的新定义的标准),最小取值范围是[-9223372036854775808,9223372036854775807]
usigned long long 的最小取值范围是[0,1844674407370955161]

参考:https://blog.csdn.net/tenlee/article/details/44997015

进制数:
八进制用0表示前缀010表示十进制的8、或者是000010其实还是10进制的8
十六进制 用0x、0X表示前缀0x0021表示的是十进制的33、0X101表示的是257

小程序:
C 语言复习笔记_第4张图片

程序

#include 
#include 
void testBases(void);

void main(void){
	testBases();
}

void testBases(void){
	int x = 100;
	printf("%#o,%d\n",010,010);
	printf("%#x,%d\n",0x10,0x10);
	printf("%d\n",0x0021);
	printf("%d\n",0x00101);	
	printf("十进制=%d; 八进制=%o; 十六进制=%x;\n",x,x,x);
	printf("带符号 #\n十进制=%#d; 八进制=%#o; 十六进制=%#x;\n",x,x,x);
}

比较恶心的一个点
day120802

printf("%ld,%ld,%ld\n",5ul,5UL,5Lu);

u、l 大小写都可以,表示的意思都是一样的
u 表示的是无符号
l 表示的是长整型

char类型用于存储字符,但是从技术层面看,char是整数类型。
因为char类型实际上存的是整数而不是字符。
计算机使用数字编码来处理字符,即用特定的整数表示特定的字符。
最常用的是ASCII编码。
char类型只占用一个字节。

奇怪的是,C语言将字符常量视为int类型而非char类型。
例如在Int为32位、char为8位的ASCII系统中,有下面的代码:

char grade = 'B';

本来’B’对应的数值66存储在32位的存储单元中,现在却可以存储在8位的存储单元中(grade)。也就是说char只取int存储单元中的后面8位(1字节),前面24位不取(3字节)。


	char grade = 'B';
	printf("字符:%c ;  变量长度:%d;  常量长度:%d; \n",grade,sizeof(grade),sizeof('B'));

C 语言复习笔记_第5张图片

利用字符常量的这种特性,可以定义一个字符常量’FATE’,即把4个独立的8为ASCII码存储在一个32位存储单元中。如果把这样的字符赋给char类型变量grade,只取最后8位。因此grade的值是’E’。
如下:

	char grade = 'FATE';
	printf("%c\n",grade);

C 语言复习笔记_第6张图片

考试的时候很容易出现这样的大坑…很难受

转义字符

字符 含义
\a 警报(ANSI C)
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ 反斜杠(\)
; 单引号(’)
" 双引号(")
? 问号(?)
\0oo 八进制(oo必须是有效的八进制数,即每个 o可表示0~7中的一个数)
\xhh 十六进制(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数)

如果上面的进制数不是范围内的如下:
C 语言复习笔记_第7张图片

将会报错…
C 语言复习笔记_第8张图片

1

你可能感兴趣的:(C/C++)