const
int
i =
0
;
int
*j = (
int
*) &i;
*j =
1
;
printf(
"%d,%d"
, i, *j)
|
输出是多少?
正确答案: A 你的答案: A (正确)
0,1
1,1
1,0
0,0
const修饰的常量值具有不可变性,c++编译器通常会对该变量做优化处理,在编译时变量i的值为已知的,编译器直接将printf输出的变量i替换为0。尽管如此,编译器仍然会为变量i分配存储空间,通过修改内存的hack方式将变量i在内存中的值修改后并不影响printf的输出。
如果将i更改为volatile const int类型的,编译器就不会对变量i做优化,printf输出的结果就为1。
选A
如果将i更改为volatile const int类型的,编译器就不会对变量i做优化,printf输出的结果就为1。
选A