问题
单项选择题
在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的值时,都从内存中读取该变量的值。