Linux C语言学习day3:变量、常量、数据类型

机器语言 —— 010101010101
 
汇编语言 —— MOV R1,#1
针对寄存器
移植性差
 
高级语言
C JAVA Python Html ...
针对不同的处理器,只需要换编译器就行
 
(1)gcc编译器
Ubuntu是linux的发行版,gcc是Linux开发人员首选的编译工具
        /1.gcc的作用
            gcc xxx.c 生成 a.out
            gcc xxx.c -o xxx   生成指定文件名的可执行程序
            将c语言编译成机器能识别的二进制语言
        /2.gcc的四步编译
            1).预处理
                    展开头文件,删除注释,替换宏定义。
                    gcc -E hello.c -o hello.i
            2).编译
                    检查语法错误,语法错误打印错误信息,正确打印生成汇编文件。
                    gcc -S hello.i -o hello.s
            3).汇编
                    将汇编语言生成二进制目标文件。
                    gcc -c hello.s -o hello.o
            4).链接
                    链接库文件,生成机器能识别的二进制文件
                    gcc hello.o -o hello
    
(2)变量
            概念:在程序运行过程中发生改变的量。
            定义格式:
 
            【存储类型】 【数据类型】 变量名
 
            存储类型:
            决定存储位置
            auto(自动型):缺省储存类型定义变量时,默认auto型
            static(静态型):
            static的作用延长生命周期,限制作用域。
            局部变量:
            未赋初值初值为0;
            存的位置:全局区(静态区)
            生命周期:同程序共存亡
            作用域:仍然是所在函数
 
            全局变量:
            将全局变量作用域限制在了本文件内。
                        
            extern(外部引用类型):当引用同一程序不同文件的变量时,需要加extern修饰
            register(寄存器类型):当变量需要被多次读取时,为提高程序运行效率,可定义成寄存器类型
            
            数据类型:
            决定占内存的空间大小
            类型        类型名            字节数                        取值范围
            char ——字符型            1                            -2^7~2^7-1
            short——短整型            2                            -2^15~2^15-1
            int——整形            4                                    -2^31~2^31-1
            long——长整型            4                             -2^31~2^31-1
            float——单精度浮点型            4                        教材33页
            double——双精度浮点型            8
            
            关键字:sizeof(变量名或类型) = 所占字节数
 
            变量名:遵循标识符的命名规则
                    1)由数字、字母、下划线组成
                    2)开头首字母不能是数字
                    3)不能与关键字重名
        
                    分类:
                        局部变量
                        定义位置:定义在函数体内部
                        初值:未赋初值为随机值
                        存储位置:栈区
                        生命周期:同所在函数共存亡
                        作用域:作用于所在函数    
 
                        全局变量
                         定义位置:定义在函数体外
                        未赋初值为0
                        存储位置:全局区
                        生命周期:同整个程序共存亡        
                        作用域:整个程序
(3)数据的储存方式及取值范围
 
            数据的存储方式:
            1)所有数据都是以二进补码形式存储于计算机中
            2)正数的原码、补码、反码都相同
            3)负数的原码保留符号位其余位取反得到反码,反码加一得到补码。
 
            char的取值范围
            1字节 = 8位
            signed char:有符号char
            最高位为符号位,其余七位为数据位:
            最大:0111 1111:127
            最小:1000 0000:-128
            取值范围: -128~127
            
            unsigned char 无符号char
            8位都是数据位:
            最大1111 1111:255
            最小0000 0000:0            
            取值范围: 0~255
 
(4)内存分区

|           栈区:由系统自动开辟的空间
|--------------------------------------------------------
|            堆区:由用户手动开辟的空间 malloc free
|--------------------------------------------------------
|            全        .bss:未初始化的静态变量和全局变量  
|             局     ------------------------------------------
|            区        .data:已初始化的静态变量和全局变量
|----------------------------------------------------     
|             常量区:常量、字符串等
|-------------------------------------------------------  
|          .txt :代码段                                                     

(5)常量
        概念:在程序的运行过程中其值不发生改变的量
        分类:
         1)    字符常量
            'A'    '!'    '@'    '0'
            'A'    65     '\'转义字符  '\x41'
         2)    字符串常量
            "hello"    "A"    
            字符串的末尾是'\0'
        3)整型常量
            整数 1  2  1000
        4)浮点型常量
            小数  0.000  1.0
        5)指数常量
            2*10^8 =》 2e+8
        6)标识常量    
            宏定义:起标识作用
            #define  宏名  常量或者表达式  
            特点:原样替换:先替换再运算,替换是不要加括号            
 
(6)强制类型转换
            (强转的类型)  变量或常量
            高位转低位可能会导致数据丢失
            
            整数相除,向下取整
 
(7)大小端
        多字节数据在内存中按一定顺序存储,这个存储顺序为大小端
        小端存储:低位数据存储在低地址,高位数据存储在高地址
           大端存储:相反
        将多字节数据进行强转截取一个字节查看其内容
            
(8)词法符号:了解
(9)关键字(32个)
        概念:系统预定义的的有特殊功能的符号
 
        存储类型:auto、extern、static、register
        数据类型:char、short、int、long、float、double、signed、unsigned
        构造类型:struct(结构体)、union(共用体)、enum(枚举类型)
        选择结构:if、else、case、switch、default
        循环结构:for、while、goto、do、break、contonue
        其它:void(空)、typedef(重定义)、volatile(防止被编译器优化)、const(只读修饰)、sizeof(计算占用字节数)、return(返回)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值