gpt4 book ai didi

带有多个条件语句的 C 代码给出了意外的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:29 25 4
gpt4 key购买 nike

我正在尝试调整强化学习的 C 程序,https://webdocs.cs.ualberta.ca/~sutton/book/code/pole.c , 以Python参加OpenAI Gym .我已将 get_box 函数复制到一个单独的测试程序中:

#include <stdio.h>

int get_box(float x, float x_dot, float theta, float theta_dot);

int main() {

int box;
box = get_box(0.01, 0.01, 0.01, 0.01);

printf("The value of box is : %x\n", box);

return 0;
}

#define one_degree 0.0174532 /* 2pi/360 */
#define six_degrees 0.1047192
#define twelve_degrees 0.2094384
#define fifty_degrees 0.87266

int get_box(x,x_dot,theta,theta_dot)
float x,x_dot,theta,theta_dot;
{
int box=0;

if (x < -2.4 ||
x > 2.4 ||
theta < -twelve_degrees ||
theta > twelve_degrees) return(-1); /* to signal failure */

if (x < -0.8) box = 0;
else if (x < 0.8) box = 1;
else box = 2;

if (x_dot < -0.5) ;
else if (x_dot < 0.5) box += 3;
else box += 6;

if (theta < -six_degrees) ;
else if (theta < -one_degree) box += 9;
else if (theta < 0) box += 18;
else if (theta < one_degree) box += 27;
else if (theta < six_degrees) box += 36;
else box += 45;

if (theta_dot < -fifty_degrees) ;
else if (theta_dot < fifty_degrees) box += 54;
else box += 108;

return(box);
}

我称之为 scratch.c。如果我用 gcc scratch.c -lm 编译这个程序并用 ./a.out 运行它,我得到以下打印输出:

The value of box is : 55

但是,如果我手动执行条件语句,我希望得到 1 + 3 + 27 + 54 = 85,这也是我使用 Python 程序得到的结果。为什么程序会打印 55?

最佳答案

如果你用 printf("%d\n", box) 而不是 printf("%x\n", box) 你会得到打印的十进制值。 0x55 = 5*16 + 5 = 85

关于带有多个条件语句的 C 代码给出了意外的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39039512/

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