const volatile int i=10;C中行不
答案:3 悬赏:10
解决时间 2021-02-19 16:06
- 提问者网友:月葬花瑰
- 2021-02-18 22:23
const volatile int i=10;C中行不
最佳答案
- 二级知识专家网友:无字情书
- 2021-02-18 23:05
这样定义volatile是无效的 const与volatile是一对矛盾体 一般的编译器都会优先于const!!
在linux下的测试:
main()
{
const volatile int i=10;
i=100; //这里赋值操作是不允许的
printf("i=%d\n",i );
}
gcc -Wall test.c
..
test.c:5: error: assignment of read-only variable `i' :为只读变量赋值错误
..
在linux下的测试:
main()
{
const volatile int i=10;
i=100; //这里赋值操作是不允许的
printf("i=%d\n",i );
}
gcc -Wall test.c
..
test.c:5: error: assignment of read-only variable `i' :为只读变量赋值错误
..
全部回答
- 1楼网友:怪咖小青年
- 2021-02-19 00:45
可以的,表示是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 我理解为人为的不可以被修改,例如直接给 i 赋值就是不可以的,但是如果被其他线程或者其他因素修改的话是可以的。
- 2楼网友:邪性洒脱
- 2021-02-19 00:01
volatile准确的说不是变量而是说这个值有可能被修改但不起被用户而是系统、中断等引起的改变,属于信号变量比如if(a)执行1;if(a)执行2;如果a不声明volatile则编译器就会代码优化两个执行体放在一块同等处理,如果为volatile则编译器知道这个a可能在执行过程中随时被修改,故不进行合并
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯