一、数据类型
    为什么要对数据进行分类
        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. Jmeter的简单配置和使用

    对于测试大佬来说,最常见的压测工具莫过于Apache旗下的 JMeter . 那么测试大佬经常使用,对于我们后端开发者来说,也是属于必备的一个技能. 接下来咱们就一起简单的配置一下烫手的jmeter ...

  2. oracle 数据恢复 回滚数据

    1.查询你执行update 语句之前的数据 精确到什么时间 select * from 表名 as of timestamp to_timestamp('2017-07-21 17:16:38', ' ...

  3. .NET Core使用 Coravel 实现任务调度

    前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据:由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求:于是我开始寻找在Quartz.Ne ...

  4. 用Python中的hashlib实现md5和sha加密

    文章目录 一.用 pandas 读取 Excel 数据 二.加密库 hashlib 三. pandas中的 map() 方法 四.数据加密工具 本文分享知识: pandas读取Excel数据 read ...

  5. (已解决)问题:windows下,为THINKPHP配置apache虚拟主机。

    1. 环境和需求 win10_x64,php7,apache24,thinkphp5. 现在,我要用apache给THINKPHP的一个项目设置一个虚拟主机,需要配置. 2. 步骤 a. 首先,找到h ...

  6. 关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法

    java.lang.IllegalStateException异常解决办法  最近在使用response.sendRedirect()时出现如下错误:java.lang.IllegalStateExc ...

  7. iOS源码调试Podspec如何写

    { "name": "XXX", "version": "1.0.0", "summary": &q ...

  8. linux清除日志和文件缓存

    1.查找大文件,从根目录 find / -type f -size +800M 2.查看磁盘挂载情况及挂载目录 df -lh 3.查看内存使用情况 free -m 4.清除缓存 echo 3 > ...

  9. 创建一个HashMap实例,该实例具有足够高的“初始容量”

    创建一个HashMap实例,该实例具有足够高的"初始容量" /** * 创建一个{@link HashMap}实例,该实例具有足够高的"初始容量" * * @p ...

  10. Excel入门

    Excel入门 一.Excel 2019工作界面介绍 文件菜单 选项卡.功能区和组 快速访问工具栏 公式编辑栏(名称框.编辑按钮.编辑栏) 内容编辑区(单元格.行号.列标.水平滚动条.垂直滚动条.工作 ...