运算符==在C中不起作用

时间:2016-12-17 11:11:23

标签: c if-statement gcc operators

我在用C编写程序时遇到了一个奇怪的错误。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include "defs.h"
int main (int argc, char* argv[])
{
 int boardSize = atoi(argv[2]);

 int generations = atoi(argv[4]);

int gamesort = atoi(argv[1]);
printf("2 is %d 1 is %d 4 is %d name of file is %s \n",boardSize,gamesort,generations,argv[3]);

    if (1==1)
    {
    printf("yes");
        ZeroPlayersGame(boardSize, generations,argv[3]);
    }
    else//(gamesort==2)
    {
        TwoPlayersGame(boardSize, generations,argv[3]);
    }
    return 0;
}

以下是从终端获取的错误:

ise@ubuntu:~/Desktop$ make

gcc -c main.c defs.c gameIO.c zeroPlayer.c twoPlayer.c

gcc gameIO.o defs.o zeroPlayer.o main.o twoPlayer.o -o prog

ise@ubuntu:~/Desktop$ ./prog 1 2 "l.txt" 3

2 is 2 1 is 1 4 is 3 name of file is l.txt 

Segmentation fault (core dumped)

很奇怪,因为你可以看到我的程序没有输入我的第一个“if”, 但是你可以看到它在if语句之前打印了这行。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我认为您的问题与您的问题标题无关&#34;运营商==无法在C&#34;中工作。正如您的输出中所见,printf运行良好,可能存在功能问题&#34; ZeroPlayersGame&#34;和&#34; TwoPlayersGame&#34;。如果您向我们提供了有关这两个功能的更多信息,那么解决问题会更容易。 另外,使用&#34; 1 == 1&#34;在逻辑陈述中是如此奇怪。为什么不排除它并在printf语句之后写下你的语句。因为&#34; 1 == 1&#34;总是如此。