在C语言中,volatile关键字的作用是什么,能否详细解释一下?
- 内容介绍
- 文章标签
- 相关推荐
本文共计219个文字,预计阅读时间需要1分钟。
对于上述伪原创内容,可以简化改写如下:
针对假设计算机场景,与100米外的外部键盘输入相比,输入后存入变量a。使用while循环默认为直接循环。当外界有新的输入不为10%时,对于假设计算机场景,输入后存入变量a。while循环默认为直接循环。
对于上面假设场景比如100来自外部键盘输入输入后存入变量a。while循环默认一直循环。当外界有新的输入不为10对于上面假设场景比如100来自外部键盘输入输入后存入变量a。
while循环默认一直循环。
当外界有新的输入不为100则跳出死循环执行mylcd
编译器编译后的汇编
f1从内存取数据存入寄存器R0
f2比较R0与立即数100
f3如果相等则调到f1
f4如果不等执行mylcd
如果没有volatile 去修饰变量a则编译器可能会做出如下优化每次取都是从同一个内存地址去取默认会以为来自同一个地址的值不会改变于是优化为只取一次对于频繁访问的变量默认放到寄存器从第2轮循环开始就不再继续从内存去取数据读内存要比读寄存器慢很多而是直接从寄存器中去取。这样如果后续键盘输入的值若发生改变则内部逻辑不会响应。与设计初衷不符。
volatile常用于硬件开发与外界硬件交互的场合。
本文共计219个文字,预计阅读时间需要1分钟。
对于上述伪原创内容,可以简化改写如下:
针对假设计算机场景,与100米外的外部键盘输入相比,输入后存入变量a。使用while循环默认为直接循环。当外界有新的输入不为10%时,对于假设计算机场景,输入后存入变量a。while循环默认为直接循环。
对于上面假设场景比如100来自外部键盘输入输入后存入变量a。while循环默认一直循环。当外界有新的输入不为10对于上面假设场景比如100来自外部键盘输入输入后存入变量a。
while循环默认一直循环。
当外界有新的输入不为100则跳出死循环执行mylcd
编译器编译后的汇编
f1从内存取数据存入寄存器R0
f2比较R0与立即数100
f3如果相等则调到f1
f4如果不等执行mylcd
如果没有volatile 去修饰变量a则编译器可能会做出如下优化每次取都是从同一个内存地址去取默认会以为来自同一个地址的值不会改变于是优化为只取一次对于频繁访问的变量默认放到寄存器从第2轮循环开始就不再继续从内存去取数据读内存要比读寄存器慢很多而是直接从寄存器中去取。这样如果后续键盘输入的值若发生改变则内部逻辑不会响应。与设计初衷不符。
volatile常用于硬件开发与外界硬件交互的场合。

