zoukankan      html  css  js  c++  java
  • C语言_第二讲_规范以及常用数据类型

    一丶编码规范基本数据类型

    编码规范

    任何程序员,都应该有良好的的编码习惯,便于以后的代码可读性和维护

    常见了编码规范有

    匈牙利命名法

    驼峰式大小写

    匈牙利命名法:

    是电脑程序设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法匈牙利应用命名法

    匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。匈牙利命名法通过明确每个变量的数据类型来解决这个问题。

    在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用途,紧跟着的就是程序员选择的任何名称。这个后半部分的首字母可以大写,以区别前面的类型指示字母(参见驼峰式大小写)。

    例如: i_de f_fd db_d ch_c   第一个给定的信息可以很明确的直到是什么类型的.

    便于代码的可读性

    驼峰式大小写:

    驼峰式大小写Camel-CaseCamel Casecamel case),电脑程序编写时的一套命名规则(惯例)。

    变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函数的可读性。

    例如: AddSum()    SubValue BinarraySerach()   由此可以看出每个函数的作用

    例如第一个 加一个数的总数  第二个减去值  第三个二进制数组查找.

    拿到一个编辑器的时候

    第一步:

    讲他的Tab键设置为空格键替换,这样可以保证在任何平台下的代码都是一样看.

    第二步:

    编写代码的时候每句代码如果依赖上一层代码的关系,需要在首行加上缩进.

    第三步:

    讲编辑器设置线,可以保证代码不要超过,这样有助于代码的可读性

    第四步:

    编写源代码的时候上边要加注释 注释要求是:

    要求(可以是项目要求,功能要求,做什么的说出来)

    时间(你修改后的时间)

    姓名(你什么时候修改的,加上时间,加上自己的姓名)

    二丶Scanf函数的常见用法

    Scanf(%d,%d,&a,&b);

    对于scanf函数来说,在扫描输入的时候,你加什么,输入的分隔符号就要是什么

    一般scanf默认都是空格或者回车是分隔符的.

    Scanf函数中可以放正则表达式

    常见的正则表达式有:

    Scanf(%[0-9]d,&a);代表只能输入0-9,不对的不会输出

    Scanf(%a-z]d,&a);代表只能输入a-z,不对的不会输出

    Scanf(%[^5]d,&a);代表不能输入五,输入五不会扫描进去

    scanf和 sscanf的区别

    Scanf是从标准输入设备中扫描输入的

    Sscanf是从标准输入中扫描输入到字符串当中的,他也可以用正则表达式.一般很常用.

    三丶内存结构大体的简要

    任何一个程序访问理论上是4G的内存

    但是操作系统占高2g的内存此时这个内存是不可以读取和修改的,因为这块成为Ring3 也可以成为R0

    除非你有操作系统的权限.

    而低2g还不是程序可以直接访问的

    还可以划分为 低64 和高64

    这些是用户区用于和操作系统交互的缓冲区

    现在剩下的内存还可以再分为

    栈段

    堆段

    代码区

    数据段

    也就是咱们程序员常说的内存四区

    而现在你的程序运行起来内存也不是都给你的,而是你需要多少我给你多少.

    这样就保证了程序可以一下开2-30个了.

    下面看看内存模型

    四丶基本数据类型

    C语言和同类型相比有很多的数据类型

    其中__int64 的long类型是非标准类型,如果从商业化角度来看,微软就可以牢牢的把握住

    这些人的平台,都是依赖自己的.因为非标准类型的代码,不可以移植的.

    溢出和进位的区别

    溢出:是针对有符号数据的描述,意思就是当数据到最大值的时候,如果在+1那么数据就会溢出有可能标称负数,恢复代价大.有可能不能恢复.

    进位:

    进位是针对无符号数据的描述,当数据超过这个数据的时候,那么就会产生进位.当前值还是有效的.可以通过一定的手段获得进位数据.

    五丶字符和字符串

    字符穿的存储和交互:

    总共提出来2中概念

    一种是:

    C语言风格的,在字符后面以0结尾,代表是一个字符串.

    另一种是Pascal风格

    前几位(不确定,一般是2位)给定大小,后面存储大小一样的字符,形成一个字符串

    他们的优缺点

    C语言:

    优点:灵活性比较高,特别是网络通信的时候,只要不是以0结尾,那么自己可以传输任意的字符.

    缺点:缺点就是比较明显了,如果要找第N个字符,那么要一个一个的查找,

    Pascal:

    优点:

    长度固定,访问N个的效率高,可以以跳板的形式访问

    缺点:

    缺乏灵活性,如果用于网络,那么传输完之后只能在传输新的,不能接着传输了.

    而微软的是2中特性相结合

    前表类型,后边以0结尾,(比较狡猾)这样做的好处是,兼容性更高,自家的产品卖得更好.

    六丶字符和字符串的区别

    ‘a’ 和””a’’的区别

    字符a是可以访问Ascii编码的

    而字符串a则是引用的字符串的首地址

    七丶标识符的规范

    标识符的规范是:C语言中,定义标识符只能是数字字母下划线

    其中数字不能开头

    例如:

    2ac 这样定义是不对的,这样的话分不清2是干什么的.

    八丶C语言中的除法规则

    规则式向0取整

    3/2 = 1  数学中是1.5

    而数学中有向上取整和向下取整的意思

    就是1.5 如果向下取整,意思就是取不大于自己的最大整数 也就是2

    向上取整就是取不小于自己的最大整数 也就是1

    所以在C语言中右移符号使用时必须要判断商是否是负数

    如果是负数那么因为规则式向0取整,那么就会出现错误.

    1.5向0取整,就是舍弃小数0.5

    九丶%号的原理

    我们都知道%号的作用

    8%3=2

    -8%3=-2

    8%-3=2

    -8%-3=-2

    算出来的结果和左操作数符号有关,左操作数是什么符号那么余数就是什么符号.

    但是原理咱们不知道,

    其实原理就是

    A/b=q...r

    A = q*b+r;

    R = a-q*b;

    代入值后发现

    8/3=2..2

    8 = 2*3+2

    余数2 = 8-2*3

    所以结果就是2

  • 相关阅读:
    Flesch Reading Ease(模拟)
    实验一:词法分析设计
    java—容器学习笔记
    [转载]马士兵Java视频教程 —— 学习顺序
    Java的安装过程
    编程之美初赛第一场
    RCC 2014 Warmup (Div. 2)
    ural 1017. Staircases(dp)
    ural 1012. K-based Numbers. Version 2(大数dp)
    ural 1009. K-based Numbers(简单dp)
  • 原文地址:https://www.cnblogs.com/wangsicongde/p/7576838.html
Copyright © 2011-2022 走看看