c语言寄存器变量

  寄存器存在于CPU内部,运算速度非常快, 因为内存中的数据必须载入寄存器才能计算。如果直接定义一个变量为寄存器变量,则少了载入等过程自然会快。对于频繁使用的变量可以把它放在寄存器中来提速度。

  对于VC编译器会自动优化,即使没有声明寄存器变量,VC也会自动优化。

  对于GCC编译器就不会自动优化。

  定义一个寄存器变量:

2
3 void main()
4 {
5     register int i = 0;
6     //&i; //寄存器变量放在cpu中,没有地址, 但是c++中没问题
7 }

  接下来,通过gcc编译器来编译下面代码,测试执行速度。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4
 5 void main4()
 6 {
 7     time_t start,end;
 8     time(&start);//获取当前时间,放在start变量中
 9
10     //这里用的是gcc的编译器,即这里不会自动优化。
11     // 测试如下没有设置寄存器变量,程序运行需要8秒
12     //double res = 0.0;//结果
13     //long int i = 0;
14
15     //定义寄存器变量 ,执行只需要4-5秒,效率高不少。
16     register double res = 0.0;
17     register long int i = 0;
18
19     for (;i<2500000000;i++)
20     {
21         res += i;
22     }
23     printf("%f\n",res);
24
25     time(&end); //获取当前时间放在end中
26
27     printf("%d",(unsigned int)(end - start)); //获取时间差
28 }

  通过上面代码可以得出结论,对于频繁使用的变量完全可以给它前面加上关键字register, 定义成寄存器变量。

  最后值得注意下面2点:

1 //全局变量最好不要占用寄存器,会影响程序的速度
2 register int num = 1000;
3
4 //静态变量无法定义为寄存器变量,静态变量存在静态区
5 register static double  res = 0.0;
时间: 2024-11-06 09:50:42

c语言寄存器变量的相关文章

寄存器变量

寄存器变量: 变量一般情况下都存在于内存中.如果程序需要使用某个变量,CPU的控制器将从内存中取得变量值后会将其暂存在寄存器中.寄存器就是CPU自己的"小内存",它的特点是"容量小.速度快".正常情况下,编程语言本身无法直接操作寄存器.但某些时候,一些变量可能会被频繁地使用,这时,频繁地对内存进行存取操作就会耗费较多的时间:如果我们能够有效地利用CPU的寄存器,就会显著提升程序的运行效率. C语言中使用关键字register来声明局部变量为寄存器变量.寄存器变量的值

OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,uniform,纹理查找,等等),是不是顶点或者片元着色器,还有其他一些底层实现的细节.最低存储需要通过精度修饰符来声明.典型地,精度操作必须要保留变量包含的精度存储.仅有的例外是需要大量复杂计算的内建函数,如atan(),返回值的精度低于声明的精度. 强烈建议顶点语言提供一种匹配IEEE单精度浮点数或更高精

C语言(四)变量的作用域

一.变量的作用域 C语言根据变量的作用域不同,将变量分为局部变量和全局变量. 1.局部变量 1)定义:在函数内部定义的函数,称为局部变量.形参也属于局部变量. 2)作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它. 2.全局变量 1)定义:在所有函数外部定义的变量,称为全局变量. 2)作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以再其定义位置之后共享. 二.变量的存储类型 变量存储类型就是指变量存储在什么地方. 有三

C语言中变量存储类型有哪些?

变量的存储类型是C语言的重要组成部分,也是C语言学习的基础.那C语言中变量的存储类型有哪几种呢?在编程过程中又该怎样运用呢?就这一问题,我今天给大家介绍一下!总的来说,C语言中变量的存储类型可以分为四种,他们分别是自动变量.静态变量.外部变量和寄存器变量这四种,他们的说明符依次是:auto.static.extern和register. 一.auto auto称为自动变量. 局部变量是指在函数内部说明的变量(有时也称为自动变量).用关键字auto进行说明,当auto省略时,所有的非全程变量都被认

C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期

全局变量 作用域:全局作用域(全局变量只需在一个源文件中定义,就可以作用于所有的源文件.) 生命周期:程序运行期一直存在 引用方法:其他文件中要使用必须用extern 关键字声明要引用的全局变量. 内存分布:全局数据区 注意:如果在两个文件中都定义了相同名字的全局变量,连接出错:变量重定义 全局静态变量 作用域:文件作用域(只在被定义的文件中可见.) 生命周期:程序运行期一直存在 内存分布:全局数据区 定义方法:static关键字,const 关键字 注意:只要文件不互相包含,在两个不同的文件中

C语言中变量的存储类型

在C语言中,对变量的存储类型说明有以下四种: auto 自动变量register   寄存器变量extern 外部变量static   静态变量 自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式. 在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型. 因此变量说明的完整形式应为:存储类型说明符数据类型说明符变量名,变量名-:例如: static int a,b;      说明a,b为静态类型变量 auto char c1,c2;

如何判断c语言的变量类型

变量三要素: 一个变量有三个基本的要素,变量的名称,变量的类型,变量的值.所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10. 变量还有一些属性如作用范围和存储类型. 变量作用范围和存储类型 作用范围有局部变量和全局变量.局部只在特定范围内起作用.全部变量在整个程序运行期间起作用. 存储类型有auto(自动),static(静态),register(寄存器变量) 自动变量auto默认省略,int a = 10; 和 auto int a = 10;是一样的.自动变量

C语言之变量类型和存储方式

变量可以分为全局变量.静态全局变量.局部变量和静态局部变量 变量的声明有两种情况: 1.一种是需要建立存储空间的(定义性声明).例如int a 在生命的时候就已经建立了存储空间. 2.另一种是不需要建立存储空间的(引用性声明).例如extern int a 其中变量a是在别的文件中定义的. 内存区域的划分: 1.栈区:由编译器自动分配和释放的内存区域,用于存放函数的参数值.局部变量等. 2.堆区:程序员向系统申请或释放. 3.全局区:用来保存全局变量和静态变量. 4.文字常量区:用来保存常量字符

R语言:变量名称和字符串的转换

R语言:变量名称和字符串的转换 2014-06-23 14:45:27 在R语言中,经常会遇到变量名称和字符串相互转换的问题.比如说,进行1000次循环运算,并将运算结果存储在1000个变量中,如x_1, x_2, ... , x_1000.这时候可以使用assign()函数,示例如下: > a错误: 找不到对象'a'> assign('a', 1)> a[1] 1 上面的例子将字符'a'转变为变量a,并将其赋值为1 . 相反,如果我们想遍历一个变量序列,并对其中的每一个变量都进行操作,