在这样的声明中说
char var;
if( var == 'x');
Run Code Online (Sandbox Code Playgroud)
我们在第一个地方为'x'分配任何内存吗?
如果是,那是什么(堆栈/数据)?
谢谢!
Ant*_*ams 24
值'x'可以作为比较指令的一部分直接存储在代码段中,或者可以存储在代码段中以立即加载到寄存器中,或者存储在数据段中用于间接加载或比较.这取决于编译器.
几乎所有针对功能强大的架构(16位及以上)的编译器都会将"x"的常量放在CPU指令中进行比较:
cmp r0, #'x'
Run Code Online (Sandbox Code Playgroud)
功能较少的体系结构倾向于将这些常量放在常量内存中的表中,并将其加载以进行比较,或者直接从内存进行比较.