zoukankan      html  css  js  c++  java
  • [C语言学习笔记四]变量与系统的交互

    使用 const 创建常量和使用 volatie 优化变量

    C语言中使用 const 定义常量。

    例如:

    const INT a = 10;
    

    此处如果添加a = 20;,编辑器则会报错,因为此处 a 是只读的。
    在编译过程中,由 const 定义的常量使用字符表存储,而不占用内存,提高了程序的效率。

    注意:为了区别变量和常量,编程时常常使用大写字母来置顶常量的名称来提高可读性。

    使用 volatile 定义一个常常需要更改的变量。使用 volatile 定义的变量会在编译器优化时更新,而不是读取在寄存器中的副本。

    例如:

    int data = 1,a,b;
    a = data;
    ...
    b=data;
    

    a 在请求变量 data 时,data 的值被写到了寄存器中。但此时 data 是一个快速更新的值,在程序没有预料到的时候更改为新的值;而 b 请求 data 的值时,因为寄存器中有现成的 data 值,所以程序会直接将寄存器中过时的 data 值给 b ,因此程序可能出现错误。

    volatile data a = 1;
    int a,b;
    a = data;
    ...
    b = data;
    

    但当使用 volatile 变量时,程序会重新读取 data 的值给 b ,所以能避免此类错误。

    使用简短的数据类型名

    有时候会遇到长数据类型名,例如 long long int ,不方便引用。此时可使用 typedef 来为 long long int 指定新数据类型名。
    例如:

    typedef int it;
    it data1 =1;  /* 使用名称定义为 it 的 int 型数据类型 */
    it data2 =2;
    

    2020年2月20日补充

    使用 sizeof 取得数据大小

    使用 sizeof() 可以取得括号内最终数值所占的字节数。

    注意:sizeof 不能用于取出数字的位数

    例如:

    int data = 10
    int main(void) {
        printf("%d
    ",sizeof(data));   /* 输出内容为 4 */
        return 0;
    }
    

    有符号数和无符号数

    C语言对变量提供了两个类型。其中一个为 signed ,即有符号数;而另一个为 unsigned ,即无符号数。 signed 型可以用来表示任何数,而 unsigned 型只能用来表示非负数。
    其中, signed 型数在内存中的首位用于表示正负,可以为 0 或 1 。unsigned 型则是直接表示。由于这种原因,产生了“安卓手机时间只能调到 2038 年”的说法。因为 C 语言的时间使用 signed 型表示,到达这个时间,除第一位外,其他数位均为 9 ,因此便会迫使进 1 ,因此引发错误使时间会变为负。
    例如:

    signed int data = -1 /* 也可以是 1 */
    unsigned int data = 1 /* 只能为 1 ,只能为非负数 */
    
  • 相关阅读:
    cf415D Mashmokh and ACM(DP)
    [USACO]EulerianTour (欧拉通路)
    hdu2544 (SPFA)
    hdu2544 (bellman-ford)
    [TC]SRM615 div1 250 AmebaDiv1
    Step By Step (zz from UESTC)
    [USACO]Sweet Butter 多种解法
    Node.js权威指南 (3)
    Web开发常见问题荟萃
    比较vue.js react.js angular.js
  • 原文地址:https://www.cnblogs.com/moreal/p/12318629.html
Copyright © 2011-2022 走看看