Hoe te printen in C

Zeer een beginner tot C, in feite is dit mijn eerste testerprogramma.

Ik kan er niet achter komen hoe ik dit nummer moet afdrukken naar de terminal.

#include <stdio.h>
int addNumbers(int a, int b)
{
    int sum = a + b;
    return sum;
}
int main(void)
{
    int a = 4;
    int b = 7;
    printf(addNumbers(a,b));
    return 0;
}

Ik weet zeker dat ik in Java de printfgewoon zou kunnen vervangen door System.outen dat het zou hebben gewerkt. Ik heb eerder geprobeerd het antwoord te zoeken, maar als je niet weet waar je moet zoeken, is het moeilijk om een antwoord te vinden.


Antwoord 1, autoriteit 100%

probeer dit:

printf("%d", addNumber(a,b))

Hier is de documentatie voor printf.


Antwoord 2, autoriteit 50%

Het eerste argument voor printf()is altijd een tekenreekswaarde, ook wel een opmaakcontroletekenreeks genoemd. Deze tekenreeks kan gewone tekst zijn, zoals

printf("Hello, World\n"); // \n indicates a newline character

of

char greeting[] = "Hello, World\n";
printf(greeting);

Deze tekenreeks kan ook een of meer conversiespecificatiesbevatten; deze conversiespecificaties geven aan dat aanvullende argumenten zijn doorgegeven aan printf(), en ze specificeren hoe deze argumenten voor uitvoer moeten worden opgemaakt. Ik kan het bovenstaande bijvoorbeeld veranderen in

char greeting[] = "Hello, World";
printf("%s\n", greeting);

De conversiespecificatie “%s” verwacht een aanwijzer naar een 0-terminated string en maakt deze op als tekst.

Voor de uitvoer van decimale integers met teken gebruikt u de conversiespecificaties “%d” of “%i”, zoals

printf("%d\n", addNumber(a,b));

Je kunt gewone tekst combineren met conversiespecificaties, zoals:

printf("The result of addNumber(%d, %d) is %d\n", a, b, addNumber(a,b));

Houd er rekening mee dat de conversiespecificaties in de besturingsreeks het aantalen typesvan aanvullende parameters aangeven. Als het aantal of de typen aanvullende argumenten die worden doorgegeven aan printf()niet overeenkomen met de conversiespecificaties in de opmaaktekenreeks, is het gedrag niet gedefinieerd. Bijvoorbeeld:

printf("The result of addNumber(%d, %d) is %d\n", addNumber(a,b));

zal resulteren in alles, van onleesbare uitvoer tot een regelrechte crash.

Er zijn een aantal extra vlaggen voor conversiespecificaties die veldbreedte, precisie, opvulling, uitvulling en typen bepalen. Raadpleeg uw handige C-referentiehandleiding voor een volledige lijst.


Antwoord 3

printf is een stuk ingewikkelder dan dat. U moet een opmaakreeks opgeven en vervolgens de variabelen die op de opmaakreeks moeten worden toegepast. Als u slechts één variabele invoert, gaat C ervan uit dat dit de formaatreeks is en probeert hij alle bytes die hij erin vindt af te drukken totdat hij een afsluitende nul (0x0) bereikt.

Dus als je het gewoon een geheel getal geeft, zal het vrolijk door het geheugen marcheren op de locatie waar je geheel getal is opgeslagen, waarbij alle rommel op het scherm wordt gedumpt, totdat het toevallig een byte tegenkomt die 0 bevat.

Voor een Java-programmeur kan ik me voorstellen dat dit een nogal grove introductie is voor C’s gebrek aan typecontrole. Geloof me, dit is slechts het topje van de ijsberg. Dit is de reden waarom, hoewel ik je wens toejuich om je horizon te verbreden door C te leren, ik je ten zeerste aanraad om alles te doen wat je kunt om te voorkomen dat je er echte programma’s in schrijft.

(Dit geldt ook voor iedereen die dit leest.)


Antwoord 4

In C, in tegenstelling tot bijvoorbeeld C++, heb je een formaatspecificatie nodig die het datatype aangeeft van de variabele die je wilt afdrukken – in dit geval %d omdat het datatype een geheel getal is.
Probeer printf(“%d”,addNumbers(a,b));


Antwoord 5

Als u die nummers in C wilt afdrukken, doet u het volgende:

printf("%d", addNumbers(a,b));

Other episodes