负值转换为其正对应部分

时间:2014-10-02 08:03:14

标签: c if-statement

我正在为游戏“craps”编写代码。

我有一个if语句。我在if语句中使用的变量是从is_win_or_loss_or_point(dice_sum)返回的。如果和为7或11,则此函数返回1.如果总和为2,3或12,则返回0.如果不是其中一个值,则返回-1。

当我得到一个导致它返回-1的和(即6)时,point_value被赋值-1。 point_value在命中if(point_value == 0)时保持其值-1。但是当它击中else if(point_value == 1)时它会做某事(在调试中它变为正1)然后继续通过else而不是继续使用else语句。

int main()
{
balance=get_bank_balance();

while (balance > 0)
{
wager=get_wager_amount();

wager=check_wager_amount(wager,balance);
printf("Wager %.2lf\n",wager);

roll1=roll_dice();
roll2=roll_dice();

dice_sum=calculate_sum_dice(roll1,roll2);

point_value=is_win_loss_or_point(dice_sum);

if (point_value == 0)
{
    printf("You lose\n");
    new_balance=adjust_bank_balance(balance,wager,point_value);
    printf("Your current balance is %.2lf\n",new_balance);
}
else if (point_value = 1) // **point of interest**
{
    printf("You win\n");
    new_balance=adjust_bank_balance(balance,wager,point_value);
    printf("Your current balance is %.2lf\n",new_balance);
}
else 
{
    roll3=roll_dice();
    roll4=roll_dice();

    dice_sum2=calculate_sum_dice(roll3,roll4);

    point_loss=is_point_loss_or_neither(dice_sum2,dice_sum);

    new_balance=adjust_bank_balance(balance,wager,point_loss);

    printf("Your current balance is %.2lf\n",new_balance);
}
balance=new_balance;

}

}

如果我错过了什么,请随时询问其他信息。

3 个答案:

答案 0 :(得分:2)

else if (point_value = 1)是隐藏的作业。打开编译器警告。

答案 1 :(得分:1)

is_win_loss_or_point的原型是什么?

另外,也许只是在你的代码中你有一个等号而不是两个(你必须写else if (point_value == 1)

答案 2 :(得分:0)

古老的经典。而不是分配

else if (point_value = 1) // = will assign

你想要

else if (point_value == 1) // == will compare