const volatile int i

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const volatile int i相关的知识,希望对你有一定的参考价值。

问题:

    const volatile int i=10;这行代码有没有问题?如果没有,那 i 到底是什么 属性?

回答:

  没有问题,例如只读的状态寄存器。它是volatile,因为它可能被意想不到地改变;它是const,因为程序不应该试图去修改它。

volatile和const并不矛盾,只是控制的范围不一样,一个在程序本身之外,另一个是程序本身。

  const表示(运行时)常量语义:被const修饰的对象在所在的作用域无法进行修改操作,编译器对于试图直接修改const对象的表达式会产生编译错误。

volatile表示“易变的”,即在运行期对象可能在当前程序上下文的控制流以外被修改(例如多线程中被其它线程修改;对象所在的存储器可能被多个硬件设备随机修改等情况)

:被volatile修饰的对象,编译器不会对这个对象的操作进行优化。一个对象可以同时被const和volatile修饰,表明这个对象体现常量语义,但同时可能被当前对象所在程序上下文意外的情况修改。

以上是关于const volatile int i的主要内容,如果未能解决你的问题,请参考以下文章

volatile const int ci = 100;这是啥意思?

6错误代码C3848.

宏定义的用法以及再次解释const和volatile

使用volatile修饰int型变量i,多个线程同时进行i++操作,这样可以实现线程安全吗

c++中的const和volatile知识自我总结

C语言 中volatile关键字的用法