如果语句保持循环 - c

时间:2013-04-26 22:40:55

标签: c function loops if-statement

所以我试图完成这个程序,我需要做的就是为这个纸牌游戏实现某种形式的用户输入,但到目前为止,我尝试的所有东西都是无休止地循环(或直到我跑在数组中的元素之外)当我查看我的代码时,我不知道我做错了什么,这似乎是有道理的。

void players(int deck[])
{
    int x;
    int a; 

    a = 1;

     printf("Player 1 \n"); 
     printf("Your Hand is: \n"); 
     draw(deck, a);
     draw(deck, a);
     while(a = 1)
     {
     printf("What would you like to do: Press 1 to Draw. 2 to Stay. \n"); 
     scanf("%d" , &x); 
     if(x = 1)
     {
          draw(deck, a);
     }
     else
     {
         a--;
     }
     }
}

这是有问题的输入

void draw(int deck[SIZE], int a)
{
    int numCards = 10;
    int i; 
    int hand[numCards];
    int card;
    for(i = 0; i < numCards && top > 0; i++)
    {
        card = deck[top-1];     
        hand[i] = card; 
        top--;   
    }
    if(a != 0)
    printcards(card);
    else
    for(i = 0; i < numCards && top > 0; i++)
    printcards(card);

}

这是Loop用来绘制卡片的功能(打印卡是一个单独的功能,只打印卡片)玩家调用绘图并且它可以正常工作但是如上所述,即使我按下2也会无休止地调用卡片(这是假设退出)。所以我不能完全确定我做错了什么。

2 个答案:

答案 0 :(得分:6)

while(a = 1)

1分配到a将导致此循环永久循环。您应该使用==代替进行比较。请打开编译器警告并修复它们,因为它们很容易发现这种情况。

顺便说一下,你的if(x = 1)声明也有同样的错误......

答案 1 :(得分:2)

您不检查相等性(运算符==),实际上是指定值(运算符=)。

if(x = 1){}相当于x = 1; if(x) {}

if (x)相当于整数的if(x != 0)