使用 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\n",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 ,只能为非负数 */

[C语言学习笔记四]变量与系统的交互的更多相关文章

  1. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  2. 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】

    前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...

  3. 【GO】GO语言学习笔记四

    流程控制 1.条件语句 举个栗子: if x>5 { return 1; }else{ return 0; } 注意:  条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句, ...

  4. Go语言学习笔记(四) [array、slice、map]

    日期:2014年7月22日   一.array[数组]   1.定义:array 由 [n]<type> 定义,n 标示 array 的长度,而 <type> 标示希望存储的内 ...

  5. Go语言学习笔记(二) [变量、类型、关键字]

    日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号.   2.Go 同其他语言不同的地方在于变 ...

  6. c语言学习笔记 const变量

    在c语言的编程过程中经常会遇到有常数参加运算的运算,比如这种. int a=100*b; 这个100我们叫常数或者叫常量,但是程序中我们不推荐这种直接写常数的方法,有两个缺点. 第一是程序可读性差. ...

  7. Go语言学习笔记1 变量,类型以及赋值

    1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...

  8. Go语言学习笔记(2)——变量、常量

    1. 变量(变量由字母.数字和下划线组成,且不能以数字开头!)      1.1 第一种 var name type // 未赋值时使用默认值 name = value 1.2 第二种: 根据所赋的值 ...

  9. python的学习笔记01_2变量 常量 注释 用户交互 格式化输出

    变量是什么? 变量的作用  Variables are used to store information to be referenced and manipulated in a computer ...

随机推荐

  1. 数据库中查出来的时间多8小时&查询数据正常展示少8小时

    将serverTimezone的配置改为Asia/Shanghaiurl: jdbc:mysql://127.0.0.1:3306/bfc?useUnicode=true&characterE ...

  2. java通过递归统计文件大小

    思路就是通过文件的遍历,对一个文件夹中的非目录文件进行大小统计,并对其中目录文件进行相同的遍历操作,代码如下: package word; import java.io.File; import ja ...

  3. Linux系统目录结构和常用目录主要存放内容的说明

    目录结构图 常用目录 /: 根目录 一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入 ...

  4. scp 后台执行(防止大文件关闭会话丢失)

    Linux scp 设置nohup后台运行 Linux scp 设置nohup后台运行 1.正常执行scp命令 2.输入ctrl + z 暂停任务 3.bg将其放入后台 1.正常执行scp命令 从or ...

  5. 图片选择并使用base64展示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 关于f(x)

    有时 z = x + y 有时 0 = x + y 有时单独用f(x) 有时 z = f(x) 很容易分不清. 从集合角度,将f(x)看成映射 即从A集合到B集合的对应关系 这样f(x)可以单独使用, ...

  7. PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)

    Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output e ...

  8. cartographer保存地图

    手持激光,并用cartographer建图,保存的地图是.pbstream格式 ht@ht:~$ rosservice call /write_state /home/ht/Desktop/carto ...

  9. 02:QT的第一个程序

    新建项目,有这么几个文件: main.cpp                      //一个main函数,作为应用程序的入口函数 mainwindow.cpp mainwindow.h untit ...

  10. 关于JavaScript的原型继承与原型链

    在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性. 这样一来,每个实例都有自己的实例属性 ...