问题 单项选择题

在C语言中,将变量声明为volatile类型,其作用为()。

A.设为静态变量

B.让编译器不再对该变量进行优化

C.设为全局变量

D.节约存储空间

答案

参考答案:B

解析:

[分析] 本题考查C语言的基础知识。在C语言中volatile是一个类型修饰符,在变量说明语句中,它告诉编译器,不能对使用变量的语句进行优化,即使程序中没有明显地改变一个变量的值,这个变量的值也会由于程序外部的原因(事件)被改变。当程序中的一个变量被映射到设备所使用的内存空间,或被独立的进程共享时,这些设备或独立进程可能在任何时刻修改这个变量的值。例如,下面的程序片段用于计算一段程序所需的时间:

unsigned long clock;

time1=clock;

……••

time2=clock;

diff-time2-time1;

变量clock用于记录系统时钟当前时间,由一个时钟中断程序来修改,这段程序的问题在于,按编译器优化后的代码,变量time2就不会获得正确的值。

正确的做法是给变量clock前加上volatile进行修饰,即:

volatile unsigned long clock;

这样,编译器在每次需要变量clock的值时,都从内存中读取该变量的值。

单项选择题
多项选择题