使用 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. Mybatis的延迟加载和立即加载

    Mybatis的延迟加载和立即加载 示例:在一对多中,当我们有一个用户,他有100个帐户 问题1:在查询用户时,要不要把关联的账户查出来? 问题2:在查询账户时,要不要把关联的用户信息查出来? 问题1 ...

  2. 轻量级RPC设计与实现第一版

    什么是RPC RPC (Remote Procedure Call Protocol), 远程过程调用,通俗的解释就是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应 ...

  3. DOM节点的属性和方法

    DOM DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model).它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行 ...

  4. linux服务基础之nginx配置详解

    nginx简单介绍:https://www.cnblogs.com/ckh2014/p/10848670.html nginx编译安装:https://www.cnblogs.com/ckh2014/ ...

  5. Firefox下载.net服务器文件时中文乱码

    ASP.NET中产生一个Excel报表,供浏览器下载.显然,下载时经常有汉字报表名称.针对当前的两个主流的浏览器IE和Firefox,似乎没有兼容的解决办法.网上搜索了一些解决方法,但在Firefox ...

  6. Javascript的重要数据类型-对象

    这次的分享,主要还是想跟大家聊聊Javascript语言中很重要的概念之一,对象.为什么说之一呢?因为Javascript其他重要概念还包括:作用域 作用域链 继承 闭包 函数 继承 数组 ..... ...

  7. Python入门常识【入门必学】

         直接上内容:   print print 隔行 / 连续 / 间隔输出 print(a) == print(a,end='\n') print(a, end='') print(a, end ...

  8. MySql快速入门(四)

    在之前我们对MySql已经有了基本的了解,接下来我们就来接触MySql的分库分表,请往下阅读: 分库分表之MyCat实现 分库分表介绍: 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为 ...

  9. linux--介绍和指令练习

    Linux Linux就是个操作系统:它和Windows XP.Windows7.8.10什么的一样就是一个操作系统而已! Linux能干什么:能当服务器,在服务器上安装者各种企业应用.服务. 比如: ...

  10. C语言 栈的初始化,入栈,出栈,判断栈是否为空,清空栈等函数

    #include <stdio.h>#include <stdlib.h> typedef struct Node{ int data ; struct Node * pNex ...