预处理 -E xxx.i 预处理文件
gcc -E xxx.c -o xxx.i
2)宏定义替换。 — 将宏名替换为宏值。
3)替换注释。 — 变成空行
4)展开条件编译 — 根据条件来展开指令。
编译 -S xxx.s 汇编文件
gcc -S hello.i -o hello.s
1)逐行检查语法错误。【重点】 — 整个编译4步骤中最耗时的过程。
2)将C程序翻译成 汇编指令,得到.s 汇编文件。
汇编 -c xxx.o 目标文件
gcc -c hello.s -o hello.o
1)翻译:将汇编指令翻译成对应的 二进制编码。
链接 无 可执行文件。
gcc hello.o -
1)数据段合并
2)数据地址回填
3)库引入
常量:不会变化的数据。不能被修改。
“hello”、‘A’、-10、3.1415926(浮点常量)
#define PI 3.1415 【强调】:没有分号结束标记。 【推荐】 定义宏: 定义语法: #define 宏名 宏值
const int a = 10; 定义语法:const 类型名 变量名 = 变量值。
const关键字: 被该关键字修饰的变量,表示为只读变量。
变量:会变化的数据。能被修改。
标识符:
变量和常量的统称。
命名规则:
1. 通常常量使用大写、变量使用小写。大小写严格区分。2. 只能使用字母、数组、下划线(_)命名标识符。且,数字不能开头。 a-z/A-Z/0-9/_int a5ir = 10; okint _34F = 6; okfloat s2_i85c = 5.4; okint 98ti_54 = 4; error.
3. 禁止使用关键字和系统函数作为标识符名称。 main/system/
sizeof关键字:
#include <iostream>
using namespace std;
int main() {int a;extern int b; // 这东西是其他地方的printf("%d",int(sizeof(a)));printf("n");printf("%d",int(sizeof(b)));
// std::cout << "Hello, World!" << std::endl;
// std::cout << "Hello, World!" << std::endl;return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j58PeCpF-1654051930105)(images/img_1.png)]
不是函数。用来求一个变量、类型的大小。 返回一个 无符号整数。 使用 %u 接收返回值。
方法1: sizeof(类型名) -- sizeof(int)方法2: sizeof(变量名) --- int a = 20; sizeof(a)【了解】: sizeof 变量名/类型名 举例1: sizeof int举例2: sizeof a
有符号整型:
signed: 有符号 (超级不常用, 通常省略): int a = 10; a = -7; int类型: %d 4 字节 int 名 = 值;short类型: %hd 2 字节short 名 = 值; short s1 = 3;long类型: %ld 4 字节 (windows: 32/64: 4字节; Linux:32位:4字节, 64位:8字节) long 名 = 值; long len = 6;long long 类型:%lld 8 字节long long 名= 值; long long llen = 70;
无符号整型:
unsigned: 无符号 只表示数据量,而没有方向(没有正负) unsigned int类型: %u 4 字节unsigned int 名 = 值; unsigned int a = 40; unsigned short类型: %hu 2 字节unsigned short 名 = 值; unsigned short s1 = 3;unsigned long类型: %lu 4 字节 (windows: 32/64: 4字节; Linux:32位:4字节, 64位:8字节)unsigned long 名 = 值; unsigned long len = 6;unsigned long long 类型:%llu 8 字节unsigned long long 名 = 值; unsigned long long llen = 70;
char字符类型:1字节
存储一个字符。本质是ASCII码。 ‘A’、‘a’、‘%’、‘#’、‘0’格式匹配符: %c‘A’:65‘a’:97‘0’:48‘n’:10‘ ’: 0
转义字符:
‘’ 将普通字符转为 特殊意。 将特殊字符转为本身意。'n' 和 ‘ ’
实型(浮点数、小数):
float: 单精度浮点型。 4字节float v1 = 4.345;%f格式匹配符。 默认保留 6 位小数。double:双精度浮点型。 8字节 【默认】double v2 = 5.678;unsigned float v1 = 4.345; 无符号的 float 数据unsigned double v2 = 5.678; 无符号的 float 数据printf("n = %08.3fn", n);输出的含义为:显示8位数(包含小数点), 不足8位用0填充。并且保留3位小数。对第4位做四舍五入。
#include <iostream>
using namespace std;
int main() {int a;float b;long long c;short d;unsigned int e;char f;double g;printf("int:%d",int(sizeof(a)));printf("n");printf("float: %d",int(sizeof(b)));printf("n");printf("longlong :%d",int(sizeof(c)));printf("n");printf("short:%d",int(sizeof(d)));printf("n");printf("unsigned int :%d",int(sizeof(e)));printf("n");printf("char:%d",int(sizeof(f)));printf("n");printf("double: %d",int(sizeof(g)));return 0;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LytPnAAM-1654051930106)(images/img.png)]
进制和转换:
十进制转2进制。 --- 除2反向取余法。 【重点】十进制转8进制。 --- 除8反向取余法。十进制转16进制。--- 除16反向取余法。int a = 56; -- 111000int b = 173; -- 101011012进制转10进制。2^10 = 10242^9 = 5122^8 = 2562^7 = 1282^6 = 642^5 = 322^4 = 162^3 = 82^2 = 4
8进制:
8进制转10进制。 定义8进制数语法: 056: 零开头,每位数0~7之间。 ---- 460124: ---- 848进制转2进制。按421码将每个八进制位展开。056:5--> 101。 6--> 110 。10111005326:5 --> 101。 3--> 011。 2--> 010。 6--> 1102进制转8进制:1 010 111 010 110: 012726自右向左,每3位一组,按421码转换。高位不足三位补0
16进制:
语法: 以0x开头,每位 取 0-9/A-F/a-fA -- 10B -- 11C -- 12D -- 13E -- 14F -- 15
16 -- 10:0x1A: 16+10 = 260x13F:15+3x16+256 16 -- 2:0x1A: 000110100x13F: 0001001111112 -- 16:0001 0011 1111: 13F自右向左,每4位一组,按8421码转换。高位不足三位补0
总结:
int m = 0x15F4;int n = 345;int var = 010011; // 不允许。 不能给变量直接复制 二进制数据。输出格式:%d %u %o %x %hd %hu %ld %lu %lld %llu %c %f %lf%d %u %x %c %s
存储知识:
1 bit位 就是一个 二进制位一个字节 1B = 8bit位。 1KB = 1024B1MB = 1024KB1GB = 1024MB1TB = 1024GB
源码反码补码:【了解】
源码:43 -> 00101011-43 --> 10101011反码: 43 -> 00101011-43 --> 1010101111010100补码:(现今计算机采用的存储形式)43 -> 00101011 : 正数不变-43 --> 11010101 : 负数,最高位表符号位, 其余取反+1
43-27 ==> 43 + -27
人为规定: 10000000 --> -128
char 类型:1字节 8个bit位。 数值位有7个。 有符号: -2^7 --- 2^7-1 == -2^(8-1) -- 2(8-1) -1 --> -128 ~ 127无符号: 0 ~ 2^8 -1 --> 0~255不要超出该数据类型的存储范围。short类型:2字节 16bit有符号: -2^15 --- 2^15-1 == -2^(16-1) -- 2(16-1) -1 --> -32768 ~ 32767无符号: 0 ~ 2^8 -1 --> 0~65535 int 类型:4字节 -2^(32-1) -- 2^(32-1)-1有符号:--> -2147483648 ~ 2147483647 无符号: 0~2^32 -1 --> 0~4294967295long类型:4字节有符号:--> -2147483648 ~ 2147483647 无符号: 0~2^32 -1 --> 0~4294967295 longlong 类型:8字节有符号:--> -2^(63) ~ 2^(63)-1 无符号: --> 0~2^63-1
本文发布于:2024-01-29 04:36:20,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170647418612740.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |