Yanlışlıkla bir işlev adını parantez olmadan yazdırdım ve bir değer yazdırdı. Bunun nasıl olduğunu merak ediyorum. Çıkış, işlev adı veya tanımından bağımsız olarak ve her çalıştırdığımda aynıdır.Neden bir işlev adı yazdırmak bir değer döndürüyor?
DÜZENLEME: Bu okuyor kim cevaplar kimseye, benim şüphe temizlendi - Açıkça eserler, yani int k = (int) foo int fonksiyon adı dönüştürülmesi ;
Bu test kodu şeyler daha açık hale getirecek:
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
void foo(){cout<<'Á';} //FUNCTION IS NEVER CALLED
int main()
{
while(_kbhit()) //JUST TO MAKE SURE BUFFER IS CLEARED
{ getch();} //SAME RESULT WITHOUT THESE TWO STATEMENTS
cout<<foo; //OUTPUT 1
printf("\n%u", foo); //OUTPUT 4199232
/*int k=foo; //CANNOT CONVERT VOID(*)() TO 'INT'*/
return 0;
}
Neden "cout" ile baskı yapıyorsunuz? Printf " –
" printf', typesafe değil. Sadece 'printf' * bir şeyler yapabildiği için, bunun * olması gerektiği anlamına gelmez *. –