register

来源:互联网 发布:哪种照相软件好 编辑:程序博客网 时间:2024/05/21 06:35

  c中register:

  在C语言中存储类型说明符 register要求变量保存在cpu寄存器中,所以不能用取地址符& 取其地址,并且,在全局变量的地方不能出现register 防止存储类型不唯一引起的冲突。

同时,register 变量必须是能被CPU寄存器所接受的类型。这就意味着,register 必须是一个单个的值,并且长度应小于等于整型长度。

#include <stdio.h>#include <stdlib.h>register int b;// error:有坏的存储类 C语言编译器对全局变量保存到内存中,与register(让其保存到cpu)冲突int main(){register int a;int * p = &a;//error:a为寄存器变量保存到cpu中不能取地址C语言不对其进行优化register int a = 0x800000000;// error :从“__int64”到“int”截断system("pause");return 0;}

cpp中register:

在cpp中register声明的变量是否保存到寄存器中取决于上下文,比如,如果对该变量取地址,则cpp编译器就会对代码进行优化,该变量不会保存到寄存器中,而是内存中。

#include <iostream>using namespace std;int main(){register int a = 10;//register只是对cpp做出一个请求,cout << &a << endl;//编译器优化,检测到取地址,就会优化成内存变量(如下图所示)cin.get();return 0;}


0 0
原创粉丝点击