第一课(进制转化、编译链接过程 、数据类型及大小、变量、常量、标识符)

第一课1.5


前言

记录1.5学习内容及心得,涉及内容:进制转化、编译链接过程 、数据类型及大小、变量、常量、标识符


一、进制转化

规则:

按权求和
示例:(100101)2 = (1x25 +1x22 + 1x20 = 37)10
(311) 8 = (3x82 + 1x81 +1x80 = 201)10
(C01)16 =(12x162 + 1x160 = 3073)10

(103)10 =>(1100111)2 => (147)8 =>(67)16
103=64+32+4+2+1=26+25+22+21+20贪心,按照 二的次幂依次减直至满足
001/100/111 = (147)8
0110/0111 = (67)16
先把十进制换为二进制,
然后二进制分别每三位、四位画线求出八进制、十六进制

二、C语言的编译链接过程

示例:图示
Hello

首先我们写完的是 .c/.cpp 源文件此时他是文本文件;
接着通过预编译生成 .i 预编译文件此时他还是文本文件;
再通过编译生成 .obj 目标文件 此时他变成了二进制目标文件;
最后通过链接生成 .exe 可执行文件。

三、数据类型及大小

int main()
{
	printf("char  :%d\n", sizeof(char));
	printf("short :%d\n", sizeof(short));
	printf("int   :%d\n", sizeof(int));
	printf("long int :%d\n", sizeof(long int));
	printf("long long :%d\n", sizeof(long long));
	printf("float :%d\n", sizeof(float));
	printf("double :%d\n", sizeof(double));
	printf("long double :%d\n", sizeof(long double));
	printf("bool :%d\n", sizeof(bool));
	return 0;
}

执行结果:
hello

总结:(5+3+1+1)

//char(1) short(2) int(4) long int(4) long long(8)
//float(4) double(8) long double(8/12/16)
//bool(1)
//void
(1字节 =>8bit)

四、变量、常量、标识符

变量:其值可读可写

全局变量:

定义在函数体外,在执行期间变量存储在 .data

局部变量:

定义在函数内部,在执行期间变量存储在 .stack栈帧

当全局变量与局部变量重名时:

从上往下,遵循就近原则
例:

#include<stdio.h>
int max = 99;
int main()
{
	int a = max;
	int max = 100;
	a = max;
	printf("a=%d\n",a);
	return 0;
}

结果:
在这里插入图片描述

常量:其值只可读不可写

宏常量:

用#define定义(结尾无 ;)

#define PI 3.14

常变量:

用const修饰

const int a = 0;

枚举常量:

用enum修饰

enum week = {Mon = 1, Tues = 2, Wed =3, Thurs =4, Fir = 5, Sat =6, Sun =7};

赋值:

enum week a = Mon; //a = 1;

字符及字符串常量:

单引号字符的定界符:‘a’ => 97
双引号字符串的定界符:“a” => 97 \0

转义符: \
1.将字符转义使其具有特殊含义

在这里插入图片描述
例:\r 回车符,将当前位置移到本行开头

	//\r 回车符,将当前位置移动到本行开头,既光标移动到本行最前面,如printf("")中最前位置
	char ch_r1[] = { "Hello\rWorldabc" };
	char ch_r2[] = { "Hello\rabc" };
	int size_r1 = sizeof(ch_r1); //r1的大小(15,字符串结尾\0 + \r + 其他)
	int len_r1 = strlen(ch_r1); //r1的长度(14,不算\0)
	int size_r2 = sizeof(ch_r2);//(10)
	int len_r2 = strlen(ch_r2);//(9)
	printf("%s\t size_r1: %d\t len_r1: %d\n",ch_r1, size_r1, len_r1);
	printf("%s\t size_r2: %d\t len_r2: %d\n", ch_r2, size_r2, len_r2);

结果:
在这里插入图片描述
例:/0 空字符,后边的内容不打印

printf("abc\0dfef\n" );

结果:
在这里插入图片描述

例:\000 1到3位8进制数所代表的任意字符 (三位以内都可以,出现8、9就自动截断)

	char ch_ei1[] = { "Hello\141cd" };
	char ch_ei2[] = { "Hello\181cd" };  // ch_ei2[] = { "Hello\181cd" } = {"Hello\00181cd"}
	int size_ei1 = sizeof(ch_ei1);	//ch_ei1的大小(9,字符串结尾\0 + \144=a + 其他)
	int len_ei1 = strlen(ch_ei1);	//ch_ei1的长度(8)
	int size_ei2 = sizeof(ch_ei2);	//ch_ei2的大小(11,字符串结尾\0 + \1——对应十进制字符 + 其他)
	int len_ei2 = strlen(ch_ei2);	//ch_ei2的长度(10)
	printf("ch_ei1:%s\t size_ei1:%d\t len_ei1:%d\n", ch_ei1, size_ei1, len_ei1);
	printf("ch_ei2:%s\t size_ei2:%d\t len_ei2:%d\n", ch_ei2, size_ei2, len_ei2);

结果:
在这里插入图片描述

例:\xhh 16进制数所代表的任意字符

	char ch_x[] = { "Hello\x61" };	//ch_x[] = { "Hello\x61" } = { "Helloa" }
	int size_x = sizeof(ch_x); //ch_x的大小(7,字符串结尾\0 + \x61=a + 其他)
	int len_x = strlen(ch_x);	//ch_x的长度(6)
	printf("ch_x: %s\t size_x: %d\t len_x: %d\n", ch_x, size_x, len_x);

结果:
在这里插入图片描述

2.将定界符、转义符转义

如:

’ \’ ’ => ’
’ \\ ’ => \

总结

1.进制转换:按权求和

2.C编译链接过程:.c —> .i —> .obj —> .exe

3.全局局部重名:就近原则

4.转义符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值