[英]Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
[英]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.