gpt4 book ai didi

C 递增/递减运算符

转载 作者:行者123 更新时间:2023-11-30 21:21:40 32 4
gpt4 key购买 nike

计算完成后确定各变量的值。所有变量在执行前的值为 5。

  1. A1/=++B1/--C1
  2. A2+=++B2%C2--

请告诉我这是如何工作的

最佳答案

变量:

int A1 = 5;
int B1 = 5;
int C1 = 5;

int A2 = 5;
int B2 = 5;
int C2 = 5;

您的代码:

A1 /= ++B1 / --C1;
A2 += ++B2 % C2--;

可能也会编译成类似的东西:

++B1;
--C1;
A1 /= B1 / C1;

++B2;
A2 += B2 % C2;
C2--;

您可以使用编译器输出 ASM,并使用 GCC 的 -S 标志。这是我的计算机上 GCC 的 ASM 输出(我添加了注释):

movl    $5, -20(%rbp) // A1 = 5
movl $5, -24(%rbp) // B1 = 5
movl $5, -28(%rbp) // C1 = 5
movl $5, -32(%rbp) // A2 = 5
movl $5, -36(%rbp) // B2 = 5
movl $5, -40(%rbp) // C2 = 5

然后对于第一个计算,执行此操作(简化注释以便于理解):

addl    $1, -24(%rbp)      // ++B1
subl $1, -28(%rbp) // --C1
movl -24(%rbp), %eax //
cltd
idivl -28(%rbp) // divide B1 by C1
movl %eax, %esi //
movl -20(%rbp), %eax //
cltd
idivl %esi // divide A1 by the previous
movl %eax, -20(%rbp)

关于C 递增/递减运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717247/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com