首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在参数声明中只能使用"register“存储类说明符?

在参数声明中只能使用"register"存储类说明符的原因是,参数传递的方式和存储位置是由编译器决定的。在函数调用时,参数通常会被复制到寄存器或栈中,以便在函数内部使用。而寄存器是一种存储速度非常快的存储器,可以提高程序的执行效率。

使用"register"存储类说明符可以向编译器建议将参数存储在寄存器中,以便更快地访问和操作参数。然而,由于寄存器的数量是有限的,而且编译器可能会根据需要将其他变量存储在寄存器中,所以并不是所有的参数都能被存储在寄存器中。

此外,现代的编译器通常能够根据代码的优化策略自动选择最佳的存储位置和传递方式,因此在参数声明中使用"register"存储类说明符的效果可能会因编译器和优化策略的不同而有所差异。

总结起来,参数声明中只能使用"register"存储类说明符是为了向编译器建议将参数存储在寄存器中,以提高程序的执行效率。然而,具体是否采纳这个建议还是由编译器决定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言自学(一)C语言基础

auto 声明自动变量 break 跳出当前循环 case 开关语句分支 char 声明字符型变量或函数返回值类型 const 声明只读变量 continue 结束当前循环,开始下一轮循环 default 开关语句中的其他分支 do 循环语句的循环体 double 声明双精度浮点型变量或函数返回值类型 else 条件语句否定分支(与if连用) enum 声明枚举类型 extern 声明变量或函数是在其他文件或本文件的其他位置定义 float 声明浮点型变量或翻书返回值类型 for 一种循环语句 goto 无条件跳转语句 if 条件语句 int 声明整型变量或函数 long 声明长整型变量或函数返回值类型 register 声明寄存器变量 return 子程序返回语句 short 声明短整型变量或函数 signed 声明有符号类型变量函数 sizeof 计算数据类型或变量长度(即所占子结束) static 声明静态变量 struct 声明结构体类型 switch 用于开关语句 typedef 用于给数据类型取别名 unsigned 声明无符号类型变量或函数 union 声明共用体类型 void 声明函数无返回值或无参数,声明无类型指针 volatile 说明变量在程序执行中可被隐含地改变 while 循环语句的循环条件

02

C语言符号意思(看了必懂系列)「建议收藏」

所有的努力都不会完全白费,你付出多少时间和精力,都是在对未来的积累。世界上什么都不公平,唯独时间最公平,你是懒惰还是努力,时间都会给出结果。 auto :声明自动变量 一般不使用 double :声明双精度变量或函数 int: 声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) char :声明字符型变量或函数 extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 float:声明浮点型变量或函数 short :声明短整型变量或函数 unsigned:声明无符号类型变量或函数 continue:结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed:生命有符号类型变量或函数 void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行中可被隐含地改变 do :循环语句的循环体 while :循环语句的循环条件 static :声明静态变量 if:条件语句

02

实型变量_C语言实型常数的合法形式

实型变量分为两类:单精度型和双精度型, 其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。 实型变量说明的格式和书写规则与整型相同。 例如: float x,y; (x,y为单精度实型量)     double a,b,c; (a,b,c为双精度实型量) 实型常数不分单、双精度,都按双精度double型处理。 void main() { float a; double b; a=33333.33333; b=33333.33333333333333; printf(“%f\n%f\n”,a,b); } 此程序说明float、double的不同 a ■■■■ b ■■■■■■■■ a<—33333.33333 b<—33333.33333333333;; 显示程序结果 此程序说明float、double的不同 float a; double b; a=33333.33333; b=33333.33333333333333; 从本例可以看出,由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。b 是双精度型,有效位为十六位。但Turbo C 规定小数后最多保留六位,其余部分四舍五入。

02
领券