C ++ double是1079574528或0

时间:2015-04-11 17:32:18

标签: c++

我的代码如下:

// in Player.cpp
Player::Player() {
    hp = 100;
    pos = vec(50, 50);
    printf("created player with %d hp on %d:%d\n", hp, pos.x, pos.y);
}

// in Game.h
Player *player;

// in Game.cpp
player = new Player();

并且输出始终是“在1079574528:0上创建0马力的玩家” 但是,当游戏运行时,x和y位置是正确的。

2 个答案:

答案 0 :(得分:3)

您正在获取输出,因为您在%d中使用printf()作为双精度。您应该使用%f

如果您使用%f,您将获得正确的输出(假设pos = vec(50, 50);不会导致任何问题)。

此外,由于你使用的是c ++,你可以使用

std::cout << "created player with " << hp << " hp on " << pos.x << " : " << pos.y << std::endl ;

答案 1 :(得分:2)

由于你是用C ++编写的,所以使用C ++。

Player::Player() {
    hp = 100;
    pos = vec(50, 50);
    std::cout << "created player with hp=" << hp << " on X:" << pos.x << ",Y:" << pos.y << std::endl;
}