C语言 已设置变量警告,但未使用

iqxoj9l9  于 2023-05-06  发布在  其他
关注(0)|答案(4)|浏览(378)
int none[5];
int ntwo[5];
    
    // the following is in a switch statement...
    
    if (answer == userAnswer)
    {
        printf("Correct!\n");
        score = prevScore + 1;
        prevScore = score;
    }                       
    else
    {
        printf("Incorrect. The correct answer was %d\n\n", answer); 
        none[i] = number1;
        ntwo[i] = number2;
    }
}
break;

// ... Switch statement ends

它给了我一个错误,说“变量警告”没有“设置但未使用”。我显然使用了它。我不知道为什么会发生这个错误。FYI你看到的所有其他变量都被声明了。我只是去掉了小恶魔的部分,在那里数组出现。

0tdrvxhp

0tdrvxhp1#

none在以下代码段中出现了两次:

int none[5]; // declared, not set to anything

然后:

none[i] = number1; // a value has been set, but it's not being used for anything

例如,如果你后来有:

int foo = none[3];  // <-- the value in none[3] is being used to set foo

for(int i = 0; i < 5; i++)
    printf("%d\n", none[i]);   // <-- the values in none are being used by printf

或者类似的东西,我们会说none是“used”,但是代码是:"none" set but not used;完全符合编译器的说法。
pastebin link中,我看到了您的问题:
你写了这个:

for(i=0;i<5;i++)
{
    printf("Question [i]: none[i]+ntwo[i]");

你想写这个:

for(i=0;i<5;i++)
{
    printf("Question [i]: ", none[i]+ntwo[i]);

现在none正在使用,您的打印正在做一些有用的事情...

4xrmg8kj

4xrmg8kj2#

使用变量不同于初始化它。
这里你给none变量设置了一个值,但是你的编译器会告诉你它是未使用的,因为你从来没有用比较运算符测试过它,或者你从来没有把它传递给一个函数。

xxe27gdn

xxe27gdn3#

如果其他答案不起作用:检查支架平衡
在第一个错误上失败通常对生产力和注意力都很好。但有时它会咬你。下面是我自己的代码,有错误,我花了一段时间才找到。
为了让你更容易找到我把评论:“ERROR_IS_ON_LINE_BELOW_EXTRA_CURLY_BRACKET”位于有问题的行的正上方。
这段代码并不是最小的示例,而是我遇到问题时正在处理的整个文件。我认为,向我展示这个问题实际上是什么样子比设计一些东西更有益。

/** CAV: C_Any_Version                                       **/
/**      Should be simple enough to work in all versions     **/
/**      of C.                                               **/

/** [+]: REFACTOR_TO: (+)  --------------------------------- **/
/** [!]: REFACTOR_TO: (!)  --------------------------------- **/
/** [-]: REFACTOR_TO: (!)  --------------------------------- **/

/** (+): Ok Message                ------------------------- **/
/** (!): Error Message             ------------------------- **/
/** (-): Refactor these to be  [!] ------------------------- **/

#define JTC_MAC_BUF_MAX ( 1024 * 1024 )
#define JTC_MAC_NIL     ((void*)0)

char buf_inn[ JTC_MAC_BUF_MAX ]; /** TEX_INN  **/
char buf_out[ JTC_MAC_BUF_MAX ]; /** TEX_OUT  **/

int nob_inn =( 0-888 ); /** Number_Of_Bytes: buf_inn **/
int nob_out =( 0-888 ); /** Number_Of_Bytes: buf_out **/

#include <stdio.h> /** for: fopen(...) **/
#include <stdio.h>  

void JTC_Say( const char* jtc_say ){
    printf( "[JTC_Say]:%s\n", jtc_say );
}
void JTC_Say_001( const char* jtc_say ){
    printf( "[JTC_Say_001]:%s\n", jtc_say );
}



signed char JTC_Put_buf_inn( /** void **/ ){

/** -------------------------------------------------------- **/

    /** VARIABLE_DECLARATIONS **/

    signed      char       ok; /** 0 if everything is ok.    **/
    FILE*             tex_poi; /** Pointer To Text File      **/
    long              tex_nob; /** Number_Of_Bytes           **/
                int   seek_ok; /** Seek success code : 0     **/
    long        int   offset0; /** Offset by 0 when seek.    **/
                int   nob_got; /** Number of read bytes.     **/
                int   sin_oct; /** Size in octetets(bytes)   **/
 
/** -------------------------------------------------------- **/

    /** VARIABLE_INIT **/

         ok=( 1  ); /** No problems at the moment.           **/
    seek_ok=( 0  ); /** Seek returns true on success         **/
    offset0=( 0L ); /** offset by nothing                    **/
    sin_oct=( 1  ); /** Size of each element is 1 byte.      **/

/** ERROR_IS_ON_LINE_BELOW_EXTRA_CURLY_BRACKET **/
};;if( ok ){ /** ........................................... **/

    /** OPEN_TEXT_FILE **/

    tex_poi = fopen( "./EXPENDABLE_TEST_FILE._" , "r" );
    if( tex_poi == JTC_MAC_NIL ){ 
        (ok=0);(JTC_Say_001("[UNABLE_TO_OPEN_FILE]"));
    };;
 
};;if( ok ){ /** ........................................... **/

    /** SEEK_TO_THE_END_OF_THE_FILE **/
    
    if( seek_ok != fseek( tex_poi, offset0, SEEK_END ) ){
        (ok=0);(JTC_Say_001("[FAILED_TO_SEEK_TO_END]"));
    };;
  
};;if( ok ){ /** ........................................... **/

    /** GET_SIZE_OF_FILE **/

    tex_nob = ftell( tex_poi );
    if( tex_nob < 0 ){ 

        (ok=0);(JTC_Say_001("[UNABLE_TO_GET_FILE_SIZE]"));
    
    };;
 
};;if( ok ){ /** ........................................... **/

    /** MEMORY_CHECK **/

    /** Check to see if we have enough memory to copy file   **/
    /** (tex_nob+1) because we need to make room for the     **/
    /** null terminator at the end of the string.            **/
    if( (tex_nob+1) > JTC_MAC_BUF_MAX ){
        
        (ok=0);(JTC_Say_001("[NOT_ENOUGH_MEMORY]"));

    };;
    
};;if( ok ){ /** ........................................... **/

    /** SEEK_BACK_TO_START_OF_FILE **/
    /** Cannot read file contents unless we first rewind **/

    if( seek_ok != fseek( tex_poi, offset0, SEEK_SET ) ){
        (ok=0);(JTC_Say_001("[FAILED_TO_REWIND_FILE_POINTER]"));
    };;

};;if( ok ){ /** ........................................... **/

    /** READ_FILE_INTO_MEMORY **/

    nob_inn=( tex_nob );  
    nob_got = fread( buf_inn, sin_oct , nob_inn , tex_poi );

    printf("[nob_inn]:%d\n", nob_inn );
    printf("[buf_inn]:%s\n", buf_inn );
    printf("[nob_got]:%d\n", nob_got );

    if( nob_got != nob_inn ){
        (ok=0);(JTC_Say_001("[FREAD_DIFFERENT_AMOUNT]"));
    };;

};;
/** -------------------------------------------------------- **/
    return( 0x01-ok );
/** -------------------------------------------------------- **/
}



/** Save processed[ buf_out ]to text file. **/
void JTC_Put_buf_out( /** void **/ ){

    /** TODO **/

}

void JTC_Par( void ){

    /** TODO **/

}

int main( void ){
    printf("[BEG:main]\n");

    JTC_Put_buf_inn(); /** INN: JS code **/

    JTC_Par(); /** Parsing logic here **/

    JTC_Put_buf_out(); /** OUT: C code **/
    
    printf("[END:main]\n");
    return( 0 );
}  

/** Be nice to other libraries and clean up after yourself **/
#undef JTC_MAC_NIL
#undef JTC_MAC_BUF_MAX


/** [JTC_Put_buf_inn] : LOAD_TEXT_FILE_INTO_buf_inn -------- **/
zyfwsgd6

zyfwsgd64#

最后一次使用它是在代码中:

none[i] = number1;

那就什么都不用做这个变量的作用是什么?你也可以把它完全移到任何地方。尝试完全删除它,因为它是无用的-最后一行代码是毫无意义的,因为none[i]永远不会再次使用。我有一种感觉,你是遗漏了一些代码,使它明显的情况下,因为你的评论说,你遗漏了一个imp的一部分,无论imp的意思。

相关问题