首页 > 试题广场 >

请你说说 C 语言里面 volatile,可以和 const

[问答题]
请你说说 C 语言里面 volatile,可以和 const 同时使用吗
volatile 限定符是用来告诉计算机,所修饰的变量的值随时都会进行修改的。用于防止编译器对该代码进行优化。通俗的讲就是编译器在用到这个变量时必须每次都小心地从内存中重新读取这个变量的值,而不是使用保存在寄存器里的备份。 const 和 volatile 可以一起使用,volatile 的含义是防止编译器对该代码进行优化,这个值可能变掉的。而 const 的含义是在代码中不能对该变量进行修改。因此,它们本来就不是矛盾的。
发表于 2022-09-25 12:25:42 回复(0)
可以 1.首先,volatile是用来修饰不稳定的变量,告诉编译器不要进行寄存器的优化,每次都去内存中取真实的值 2.const形容变量,是告诉编译器代码中不能改变该变量的值,如果改变了,请报错提醒我。 3.两者并不冲突,所以可以同时使用。 4.具体来说,中断程序改变变量值,或者共享变量被另一个进程改变,这些情况对于编译器来说是不可见的,如果不使用volatile来修饰的话,编译器可能会进行优化,使用寄存器中的脏值。
发表于 2023-02-26 11:19:16 回复(0)
1. volatile: 告诉编译器,所修饰的变量的值是随时改变的,应该存内存中读取它的值,所以,不要对他进行优化。 2. const:告诉编译器,所修饰的变量的值是不可以被改变的,所以,后面的代码中,不可以出现变量被重新赋值的情况。 3. 一个是告诉编译器,它随时被改变(中断,多线程),一个是告诉编译器,它不可以被改变(人为地,客观地),这两个是不矛盾的。 4. const volatile int a = 10; =>这意味着 a 是一个常量,不能被修改(例如你不能在代码中写 a = 20),但是它也可以响应外部的修改(例如可能存在一个中断服务程序(ISR)或者其他线程可以改变它的值)。
发表于 2023-11-09 21:00:16 回复(0)
volatile限定符是用来告诉计算机,所修饰的变量的值随时都会改变。用于防止编译器对代码的优化,换句话说,就是编译器在用到这个变量的时候都要从内存中重新读取这个变量的值,而不是使用保存在寄存器中的备份。const所修饰的变量的值在代码中不能进行修改,两者不冲突,可以一起使用
发表于 2022-09-05 22:33:47 回复(0)
volative限定符表示值会变,读取时不能用寄存器里面的备份,而是要重新从内存中读取,它是为了防止编译器对代码进行优化。const含义是在代码中不能对该变量进行修改,不矛盾
发表于 2022-07-11 08:03:56 回复(0)
volatile 限定符是用来告诉计算机,所修饰的变量的值随时都会进行修改的。用于防止编译器对该代码进行优化(当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值)。通俗的讲就是编译器在用到这个变量时必须每次都小心地从内存中重新读取这个变量的值,而不是使用保存在寄存器里的备份。 const 和 volatile 可以一起使用,volatile 的含义是防止编译器对该代码进行优化,这个值可能变掉的。而 const 的含义是在代码中不能对该变量进行修改。因此,它们本来就不是矛盾的。
发表于 2024-05-17 09:55:30 回复(0)
volatile : 表示该变量随时都会进行修改,防止编译器对该代码进行优化,通俗的讲每次都从内存中读取这个变量的值,而不是使用保存在寄存器里的备份,const 的含义是在代码中不能对该变量进行修改,两个概念不矛盾
发表于 2023-11-11 12:03:09 回复(0)
voliate告诉编译器不对所修饰的变量进行优化,也就是取值的时候要去内存中取不要去寄存器中取值;可以和const同时使用。
发表于 2023-09-23 15:18:16 回复(0)
volatile 表示该变量是可变的,用volatile定义的变量,每次读取时都是从内存读取,而不是缓冲区; 因此,我认为const 不能 与volatile同时使用
发表于 2023-08-15 10:26:39 回复(0)
可以一起使用 1. volatile告诉计算机所修饰的变量的值随时可能会进行修改,用于防止编译器对代码进行优化,编译器每次遇到这个变脸都要从内存中重新读取该值,而不能用寄存器里的备份。 2. const表示代码中不能对变量进行值的修改 不矛盾
发表于 2023-07-26 16:18:18 回复(0)