2013-07-28 99 views
-2

我是新使用Cygwin和C PROGRAMM。我有一個棘手的問題
貫穿Cygwin的故障輸出exe文件:分段故障(核心轉儲)

#include <stdio.h> 
#define N 10 
int main() 
{ 
    int nPerson[N]={9,11,23,44,2,4,5,6,7,3}; 
    int nFloor,nMinFloor,nTargetFloor; 
    nTargetFloor = -1; 

    for(int i=0;i<N;i++){ 
     nFloor=0; 
     for(int j=0;j<i;j++) 
      nFloor+=nPerson[j]*(i-j); 
     for(int j=i+1;j<N;j++) 
      nFloor+=nPerson[j]*(j-i); 
     if(nTargetFloor=-1||nMinFloor>nFloor){ 
      nTargetFloor=i; 
      nMinFloor=nFloor; 

     } 

    } 
    printf("%s,%s",nTargetFloor,nMinFloor); 
// return(nTargetFloor,nMinFloor); 

} 

我complie與gcc -std=c99 -o code1081 code1801.c
然後我運行./code1081.exe .exe文件,控制檯輸出錯誤信息的文件後「分割故障(核心轉儲)」 。
謝謝你幫助我找出錯誤點。非常感謝

+1

啊,我們(http://meta.stackexchange.com/questions/167342/close-all-the-typo-questions),順便[關閉所有的錯字的問題] 。 – 2013-07-28 05:17:43

+0

你可以使用'-g'選項編譯文件,然後'gdb code1801'。 – 0decimal0

+2

你無法找到錯誤,因爲在','和';'之後沒有空格,並且'a = b'必須是'a = b'。 –

回答

2

if(nTargetFloor=-1||nMinFloor>nFloor){

該線路應該是

if(nTargetFloor == -1||nMinFloor>nFloor){

比較應該用==,而不是=。一將難求的bug :)

+3

不是「很難發現的錯誤」 - OP太懶得用'-Wall -Wextra'編譯... – 2013-07-28 05:17:11

+1

即使懶惰的人也可以把所有東西都交給調試器,如果他們想要:P ...... 。這個'=='而不是'='帖子在SO上每5個就有一個 – 0decimal0