簡體   English   中英

ISO C ++禁止比較指針和整數[-fpermissive](C ++)

[英]ISO C++ forbids comparison between pointer and integer[-fpermissive](C++)

void first_screen_output()
{
    int input_num(); 
    scanf("%d",&input_num);
    if(input_num==1) return;
    else if(input_num==2)
    {
        system("pause");
    } 
}

當我嘗試編譯此代碼時,發生了錯誤。 錯誤發生在if〜else線上。 我該如何解決這個錯誤?

 int input_num(); 

這聲明了一個名為input_num函數,函數返回一個int且不接受任何參數。 非正式地稱為“最令人煩惱的解析” C ++允許您在其他函數的實現內部聲明函數的事實只會加劇混亂。

 scanf("%d",&input_num); 

"%d"表示您想讀入一個int ,所以您需要傳遞一個int* 但是, &input_num函數指針int (*)() ),因為編譯器會警告您。 這是因為指定不帶括號的函數名稱( input_num )表示函數指針(並且運算符的地址&在這里無效,因為函數指針不同於所有其他指針)。

因此,無論如何,這條線將導致不良行為。

 if(input_num==1) return; else if(input_num==2) 

函數指針不能與int進行比較。


解決所有這些問題的方法實際上是將input_num一個int而不是一個函數:

int input_num = 0;

當您使用它時,請擺脫scanf並使用std::cin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM