C语言--day2
gcc 编译器补充在编译源文件的过程中需要指定可执行程序的名字的话需要使用 -o 选择编译1.c 这个文件并生成可执行文件 名为 appgcc 1.c -o app ./app可能出现问题警告类可以生成可执行文件但是编译的过程中有非致命问题。如果可以话需要修复 这个警告在编译。错误类 不会生成可执行文件。修改错误后在编译。gcc 编译的步骤如下预处理 gcc 1.c -E -o 1.i //文本文件编译 gcc 1.c -S -o 1.s //文本文件汇编 gcc 1.c -c -o 1.o // object 目标文件二进制不可执行链接 gcc 1.c -o app编译 把上一步处理好的文件编译为汇编文件。汇编 把汇编文件转换为 obj文件(目标文件)二进制 不可执行。od -t x1 文件名 |less 专门显示二进制od 专门查看二进制文件 的命令-t 指定输出格式 x1 16进制显示 1byte文件名 被查看的文件| 管道 连接2个命令less 显示的内容满一页自动停止。 按空格显示下一也按q键 退出代码在计算机运行规程可执行程序(a.out)在 计算机的外存(ssd, flash)中存储./a.out ,计算机会把a.out 中的内容(代码数据) 加载到内存中cpu 就会从内存中读出 代码数据 对数据进行相关操作总结数据先从内存经过多种运算到外存存储然后当需要这个数据时候在从外存到内存外存里面的数据断电后会保存计算机的数据单位bit 比特位 0/1byte 字节 1 byte 8bit 可以表示一个英文字母一个汉字占3个字节Linux和2个字节WindowskB 千字节 1024 byteMB 兆字节 1024*1024 byte 10^6 byteGB 吉字节 1024*1024*1024 byte 10^9 byteTB 太字节 1024*1024*1024*1024 byte 10^12进制转换十进制 , 逢十进1二进制 逢二进1八进制 逢八进116进制 逢16进110进制转换2进制 对10进制数 一直除2 直到商为0 记录余数然后逆序排列10进制转换8进制 对10进制数 一直除8直到商为0 记录余数然后逆序排列10进制转换16进制 对10进制数 一直除16 直到商为0 记录余数然后逆序排列2进制转换10进制 按权2展开以此相加2进制转换8进制 三个数为一组从左往右 不够补零2进制转换16进制 四个数为一组从左往右 不够补零C语言基础数据类型2类1. 基本数据类型整型类型浮点类型字符类型缺省类型 void 函数的返回值函数参数布尔类型 bool stdbool.h 1 ture 0 false2. 构造数据类型(用户自定义类型)结构体共用体枚举整数类型分为有符号 和无符号整数数据在内存都是以补码形式存储的。如果是正整数的话补码就是原码本身如果是负数的话需要计算补码 先获得原码(先绝对值转二进制) 对原码取反操作(原码中的0变1,1变0) 获得反码对反码 1 操作 。sizeof关键字sizeof 是一个关键字 sizeof(a) , sizeof(10),sizeof(int) .获得对应类型的数据在内存中占用的空间是多少个字节类型大小short 短整型 有符号 signed short2 byte(16bit)unsigned short 短整型 无符号2 byteint 整型 有符号 signed int4 byte (32bit)unsigned int 整型 无符号4 bytelong 长整形 有符号8 byte(64bit)unsigned long 长整型 无符号8 byte字符类型char 有符号 字符 1 byte (8bit) -128 - 127unsiged char 无符号 1 byte (8bit) 0-255字符类型的本质是 整数。是 字符在存到内存中存储的是字符对应的编码。在c语言中char 类型表示单个字符能够从键盘上输入的字符大小英文字母小写字母标点符号一些特殊的控制字符也可以使用char 表示。(转义字符)char shortintlonga - 97 - 0110 0001 内存中的存储方式。 1byte 8bit位ASCII编码命令man ascii浮点类型默认情况浮点数都是符号。小数 。3.14 5.1231231231float 单精度 4byte 32bit -3.402823^-38 - 3.402823^38double 双精度 8byte 64bit -1.797693^-308 - 1.797693^308IEEE 754 内存储存方式float 1bit(符号位) 8bit(指数) 23bit(尾数)double 1bit(符号位) 11bit(指数) 52bit(尾数如何存储把整数部分转为二进制小数部分的转换给小数部分一直乘 2 直到小数点后为0 位置。 保留每次的 整数部分。移位操作 把小数向左移动最高为保留 1一个二进制的1 。记录移动的位数。 127 获得指数位。把移位后的小数部分放到尾数部分。如果原来的数字是负值那么最高位1 如果是正值 最高位是0常量变量数据类型 变量名常量含义 在程序运行过程中不会发生改变的量。 又是有数据类型。常量可以直接使用变量含义 在程序运行过程中可以发生变化的量。 都是有数据类型。变量在使用之前需要先定义在使用。整形常量浮点的常量字符常量字符串常量变量名(标识符)的规则只能字母数字下划线。不能数字开头。变量名不要和系统的 关键字 重名。变量名不要和系统的 函数 重名变量名 见名知意。