一、数据类型
    为什么要对数据进行分类
        1、现实中的数据就是自带类别属性的
        2、对数据进行分类可以节约内存存储空间、提高运行速度
    C语言中数据分为两大类别:自建(程序员自己设计的),内建(C语言自带的)
    存储空间的单位:
        bit 比特 存储一个二进制位,只能存储0或者1,计算机存储数据的最小单位
        Byte 字节 存储八个二进制位,计算机存储数据的基本单位
        KB 1024字节
        MB 1024KB
        GB 1024MB
        TB 1024GB
        PB 1024TB
    sizeof():可以计算类型变量所占内存字节数
    整型:
        signed 有符号 二进制最高位为符号位 0正数 1负数
            类型名              字节数              数据范围
            signed char         1                   -128~127
            signed short        2                   -32768~32767
            signed int          4                   正负20亿
            signed long         4(32位)/8(64位)
            signed long long    8                   正负9开头19位整数
        注意:signed可以不写
        unsigned 无符号 二进制最高位为数据位
            类型名              字节数              数据范围
            unsigned char       1                   0~255
            unsigned short      2                   0~65535
            unsigned int        4                   0~40亿
            unsigned long       4(32位)/8(64位)
            unsigned long long  8                   0~1开头20位整数
        注意:由于定义无符号数据时比较麻烦,在标准库中把这些类型重新定义成了新的类型名
            需要包含头文件名<stdint.h>
            uint8_t\uint16_t\uint32_t\uint64_t
            int8_t\int16_t\int32_t\int64_t
    浮点型:
        float           4               单精度浮点型
        double          8               双精度浮点型
        long double     12(32位)/16(64位)      
        注意1:采用科学计数法、在二进制与真实数据之间需要进行换算过程,因此浮点数的运算使用速度比整数型慢得多,所以编程时尽量用整数型
        注意2:大部分操作系统只对小数点后6位有效  
    模拟型:
        字符型:char
            字符就是图案或符号,在内存中本质上依然存储成整数,需要显示成字符时,操作系统会根据ASCII码表中的对应关系把整数显示成对应的符号或图案
            ''      0       特殊字符 空字符
            '0'     48
            'A'     65
            'a'     97
            char想要显示成整数:%hhd
                想要显示成字符:%c
        布尔型:bool
            现有的C语言后有的bool类型,C语言中不可能有真正的布尔类型,都是用<stdbool.h>中使用整数对布尔类型进行模拟
            bool -> true false
二、变量与常量
    变量 -> 在程序运行期间值可以发生变化的叫做变量,相当于存放数据的盒子
    定义:
        类型名 变量名;
            int num;
            取名规则:
                1、由字母、数字、下划线组成
                2、不能以数字开头
                3、不能与C语言32个关键字重名
                4、见名知意(功能、类型、范围...)
        注意:如果一个变量的初始值默认是随机的,一般为了安全,在定义时对变量初始化为0
    使用:
        赋值:      变量名 = val;
        参与运算:  变量名*10;
    变量的输入、输出:
        int printf(const char *format, ...);
        功能:输出数据
        format:"提示信息+占位符"
        ... :变量名列表
        返回值:成功输出的字符个数
        类型占位符:C语言通过占位符的方式传递变量的类型
            %hhu %hu %u %lu %llu unsigned char/short/int/long/long long
            %hhd %hd %d %ld %lld signed char/short/int/long/long long
            %f float
            %lf double
        字符型:%c char
        int scanf(const char *format, ...);
        功能:输入数据
        format:"占位符"
        ...:变量地址列表
            注意:scanf需要变量类型和地址
                变量地址 == &变量名
        返回值:成功输入的变量个数
       
    常量 -> 在程序运行期间值不发生变化
        10      默认 int
        10l     long
        10ll    long long
        10u     unsigned int
        10lu    unsigned long
        10llu   unsigned long long
        3.14    默认 double
        3.14f   float
        3.14l   long double
        问题:定义一个100年总共有几秒的宏定义(忽略闰平年)
            #define SEC 3600*24*365*100u
三、格式化输出
    %nd     显示n个字符宽度,不足时补空格,右对齐
    %-nd    显示n个字符宽度,不足时补空格,左对齐
    %0nd    显示n个字符宽度,不足时补0,右对齐
    %n.md   显示n个字符宽度(小数点也算一位),不足时补空格,右对齐,m表示小数点后显示的位数(四舍五入)
    %g      不显示小数点后多余的0
四、运算符
    自变运算符:
        ++/-- 让变量的值自动加一或减一
        前自变:++/--num    立即有效
        后自变:num++/--    下一行语句才有效
        注意:不要在一行代码中多次出现自变运算符
    算数运算符:
        + - * / %
        整数/整数 只保留整数部分
        / % 除数不能为0,否则会在运行时出现浮点数例外(核心已转储)
        % 不能对浮点数求余
    关系运算符:
        == != > < >= <=
        会得到比较的结果是1(成立)或0(不成立),比较的接果还可以继续参与运算
   
    逻辑运算符:
        && || !
        会先把运算对象转换成逻辑值,非零转为真,0转为假,然后在参与逻辑运算
        A && B  一假即假
        A || B  一真即真
        !A      求反
        &&和||的短路特性:
            当左边部分的值已经确定整个逻辑运算符的结果时,那么右边部分不执行
            也可以借助短路特性,实现简单的单分支效果
    三目运算符:
        A ? B : C
            判断A的值如果为真,则执行B的内容,否则执行C的内容
    赋值运算符:
        = += -= *= ...
        a += b;
        注意:赋值运算符的运算结果是右边赋的数据
    位运算符:& | ~ ^ << >>  
五、类型转换问题
    只有相同类型的数据才能能进行运算,如果类型不相同的数据需要先转换成相同的类型才能运算
    自动类型转换:
        转换规则:以不丢失数据为基础,可以适当地牺牲一些空间
            1、字节少的向字节多的转
            2、有符号的向无符号的转
            3、整型向浮点型转
            特例:当运算对象类型只是char或者short,编译器会做类型提升,提升为int再运算
    强制类型转换:
        (新类型名)数据;
        有丢失数据的风险,但是需要使用时还是得用

Linux & 标准C语言学习 <DAY4>的更多相关文章

  1. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  2. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  3. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  4. C语言学习008:标准错误

    在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误 #include <stdio.h> ...

  5. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  6. 实验四 Linux系统C语言开发环境学习

    项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...

  7. 【C语言学习】《C Primer Plus》第1章 概览

    学习总结 1.C语言于1972年由贝尔实验室的Dennis Ritchie在与Ken Thompson一起设计UNIX操作系统的时候开发的.的的设计构想来源于Ken Thompson的B语言.Anyw ...

  8. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  9. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以“85”开头的很大的数字(此时该段内存中为一个垃圾数,为了避免出现较常 ...

  10. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

随机推荐

  1. Redis设计实现-学习笔记

    最近在准备面试,问到redis相关知识,只能说个皮毛,说的既不深入也不全面,所以抓紧突击一下,先学<redis设计与实现>. 选择看书的原因是: 书中全面深入,且能出书一定十分用心: 搜博 ...

  2. NX 二次开发,线性移动uf5943

    #include <uf.h> #include <uf_modl.h> #include <uf_part.h> #include <uf_modl_pri ...

  3. UE4_C++笔记

    目录 C++ 获取当前世界指针 创建文件夹拾取窗口 获取Actor所在地图名称 选择世界里所有指定类型的Actor 获取当前世界所有已加载关卡 获取当前选择的已加载关卡 获取关卡名称 判断文件/路径是 ...

  4. go理论知识总结

    基于const常量理解个中类型的内存分配引入参考 官方:Constant expressions may contain only constant operands and are evaluate ...

  5. Servlet执行步骤

    <!-- 1. 用户发请求,action=add 2. 项目中,web.xml中找到url-pattern = /add -> 第12行 3. 找第11行的servlet-name = A ...

  6. software Engineering homework 4

    博客信息 沈阳航空航天大学计算机学院2020软件工程作业 作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/1068 ...

  7. PPT之图表

    1.从数据到信息 同样的数据,通过不同的图样式来呈现不同的突出重点.使用饼状图突出元素占比,使用排序的柱状图突出最大或者最小的元素,使用虚化与实体突出表达重点. 同样的数据,通过不同的关注点突出重点. ...

  8. 常用功能系列---【JWT生成Token实现接口登录认证方案思路】

    JWT生成Token实现接口登录认证方案思路 方案一(双token实现无感刷新) 在token中,refreshToken的作用主要是避免token过期时,前端用户突然退出登录,跳转至登录页面. 但是 ...

  9. heimaJava18_线程

    Java 线程 单线程 线程(thread)是一个程序内部的一条执行路径. main方法的执行其实就是一个单独的执行路径 程序中如果只有一条执行路径,那么这个程序就是单线程的程序 多线程 多线程是指从 ...

  10. 论 C++、C语言中指针的实用价值(一)

    指针的价值在于哪里?单纯为了迷惑别人?其实并非如此.本系列长期总结一些必须用指针或者用指针很好的场合: 写任何的代码都必须有一定的动机.而不是想怎么写就怎么写 写代码不是纯灵感的行为.也不是纯机械的行 ...