如果(var =='x'),文字存储在语句中的哪个位置?

Ked*_*arX 5 c c++ syntax

在这样的声明中说

char var;

if( var == 'x');
Run Code Online (Sandbox Code Playgroud)

我们在第一个地方为'x'分配任何内存吗?

如果是,那是什么(堆栈/数据)?

谢谢!

Ant*_*ams 24

值'x'可以作为比较指令的一部分直接存储在代码段中,或者可以存储在代码段中以立即加载到寄存器中,或者存储在数据段中用于间接加载或比较.这取决于编译器.

  • 鉴于你已经很好地列举了各种可能性,我将填补另一个:寄存器."x"的ASCII值可以(由编译器)知道作为一些先前执行的代码的结果方便地在寄存器中,或者通过这种预先存在的状态的增量,等等来简单地生成. (3认同)

wal*_*lyk 7

几乎所有针对功能强大的架构(16位及以上)的编译器都会将"x"的常量放在CPU指令中进行比较:

cmp  r0, #'x'
Run Code Online (Sandbox Code Playgroud)

功能较少的体系结构倾向于将这些常量放在常量内存中的表中,并将其加载以进行比较,或者直接从内存进行比较.