1. volatile: 告诉编译器,所修饰的变量的值是随时改变的,应该存内存中读取它的值,所以,不要对他进行优化。 2. const:告诉编译器,所修饰的变量的值是不可以被改变的,所以,后面的代码中,不可以出现变量被重新赋值的情况。 3. 一个是告诉编译器,它随时被改变(中断,多线程),一个是告诉编译器,它不可以被改变(人为地,客观地),这两个是不矛盾的。 4. const volatile int a = 10; =>这意味着 a 是一个常量,不能被修改(例如你不能在代码中写 a = 20),但是它也可以响应外部的修改(例如可能存在一个中断服务程序(ISR)或者其他线程可以改变它的值)。