[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\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语言学习笔记四]变量与系统的交互的更多相关文章
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
前置知识:awk 参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html awk 'BEGIN{ commands } pattern{ co ...
- 【GO】GO语言学习笔记四
流程控制 1.条件语句 举个栗子: if x>5 { return 1; }else{ return 0; } 注意: 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句, ...
- Go语言学习笔记(四) [array、slice、map]
日期:2014年7月22日 一.array[数组] 1.定义:array 由 [n]<type> 定义,n 标示 array 的长度,而 <type> 标示希望存储的内 ...
- Go语言学习笔记(二) [变量、类型、关键字]
日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变 ...
- c语言学习笔记 const变量
在c语言的编程过程中经常会遇到有常数参加运算的运算,比如这种. int a=100*b; 这个100我们叫常数或者叫常量,但是程序中我们不推荐这种直接写常数的方法,有两个缺点. 第一是程序可读性差. ...
- Go语言学习笔记1 变量,类型以及赋值
1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...
- Go语言学习笔记(2)——变量、常量
1. 变量(变量由字母.数字和下划线组成,且不能以数字开头!) 1.1 第一种 var name type // 未赋值时使用默认值 name = value 1.2 第二种: 根据所赋的值 ...
- python的学习笔记01_2变量 常量 注释 用户交互 格式化输出
变量是什么? 变量的作用 Variables are used to store information to be referenced and manipulated in a computer ...
随机推荐
- 每隔n步循环删除,返回最后一个元素
题目:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置.以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-& ...
- SOA分析浅谈
根据百度定义:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服 ...
- Verilog-case、casez和casex的区别
参考博客:https://www.cnblogs.com/guolongnv/articles/6906929.html 1.基本概念 1)?表示z,而不是“dont care” 2)区分: case ...
- 题解【AcWing1089】烽火传递
题面 单调队列优化 DP 模板题. 我们考虑设 \(dp_{i}\) 表示从 \(1\) 到 \(i\) 能够准确传递情报,且第 \(i\) 个烽火台发出信号的最小费用. 转移方程不难得出:\(dp_ ...
- 第二章 Spring MVC入门 —— 跟开涛学SpringMVC 读后感1
2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...
- PHPStorm使用XDebug调试
(一)php安装xdebug扩展,PHPStorm+XDebug单步调试 (二)PHPStorm配置XDebug (三)PHPStorm使用XDebug调试 (四)PhpStorm+Xdebug配置单 ...
- C#在运行时自动引入正确的Dlls
设置程序Dlls的搜索路径 1.导入Native函数 /// <summary> /// 设置Dlls的搜索路径 /// </summary> /// <param na ...
- contos7 用户管理相关操作命令
# 查看用户列表 cut -d : -f 1 /etc/passwd # 查看可以登录系统的用户 cat /etc/passwd | grep -v /sbin/nologin | cut -d : ...
- Centos下安装Oracle12c
总结一次安装oracle的折腾血泪史环境准备 centos7 虚拟机VMware Workstation Pro14 IP:192.168.245.128(根据实际情况) 4G物理内存,8G虚拟内存, ...
- C++-POJ3233-Matrix Power Series[矩阵乘法][快速幂]
构造矩阵 #include <cstdio> ; struct Matrix{int a[MAXN][MAXN];}O,I;int N; ;i<MAXN;i++);j<MAXN ...