你理解错了。static只是指定将其存储在静态存储区。不同于一般变量,一般变量在运行时候由程序分配内存,而静态变量编译的时候就将分配内存,比如你的问题中,a将被赋值为3,然后,如果你在程序中写a=a+1;a就会变成4,静态变量和一般变量唯一的不同就是整个程序运行期间都将存在。她所在的内存不会被释放。你说的变量不能赋值,固定不变,那不是static,而是const,将变量变成一个常变量,当作常数一样使用,如const a=4,那么在程序运行中,a不能被改变值。