Der Aufruf von sizeof bei einem Funktionsaufruf überspringt den tatsächlichen Aufruf der Funktion!}

Ich bin zufällig über diesen Code gestolpert.

<code>int x(int a){
    std::cout<<a<<std::endl;
    return a + 1;
}

int main()
{
    std::cout<<sizeof(x(20))<<std::endl;
    return 0;
}
</code>

Ich habe erwartet, dass es 20 nach 4 druckt. Aber es druckt nur 4. Warum passiert es so? Ist es nicht falsch, eine Funktion zu optimieren, die einen Nebeneffekt hat (Drucken auf E / A / Datei usw.)?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage