Como imprimir em C

Muito principiante para c, na verdade este é o meu primeiro programa de testes.

Não consigo descobrir como imprimir este número no 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;
}

tenho a certeza que em java eu poderia apenas substituir o printf pelo sistema.e teria funcionado. Tentei procurar a resposta antes, mas se não sabes o que procurar, é difícil encontrar uma resposta.

 15
c
Author: Toon Krijthe, 2010-01-29

3 answers

Tenta isto:

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

Aqui está a documentação para o printf .

 32
Author: nickf, 2013-05-05 19:39:09

O primeiro argumento para printf() é sempre um valor de cadeia de caracteres, conhecido como uma cadeia de controlo de formato. Este texto pode ser texto regular, como

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

Ou

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

Este texto também pode conter um ou mais especificadores de conversão ; estes especificadores de conversão indicam que foram passados argumentos adicionais a printf(), e especificam como formatar esses argumentos para o resultado. Por exemplo, eu posso mudar o acima para

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

A conversão "% s" o specifier espera um ponteiro para uma cadeia de 0-terminados, e formata-o como texto.

Para o resultado decimal inteiro assinado, use tanto os especificadores de conversão "%d" ou "%i", como

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

Pode misturar texto regular com especificações de conversão, como por exemplo:

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

Note que os especificadores de conversão na cadeia de controlo indicam os números e tipos de parâmetros adicionais. Se o número ou tipos de argumentos adicionais passaram para printf() não corresponder aos especificadores de conversão no texto do formato, então o comportamento é indefinido. Por exemplo:

printf("The result of addNumber(%d, %d) is %d\n", addNumber(a,b));
Vai resultar em qualquer coisa, desde uma saída distorcida a uma queda total.

Existem várias bandeiras adicionais para os especificadores de conversão que controlam a largura do campo, precisão, estofamento, justificação e tipos. Verifique o seu manual de referência c útil para uma lista completa.

 17
Author: John Bode, 2010-01-29 15:28:33
O Printf é um pouco mais complicado do que isso. Você tem que fornecer uma string de formato, e então as variáveis para se aplicar à string de formato. Se você apenas fornecer uma variável, C irá assumir que é o formato string e tentar imprimir todos os bytes que encontra nele até atingir um nul de terminação (0x0). Por isso, se lhe der um número inteiro, irá marchar alegremente pela memória no local onde o seu inteiro está armazenado, despejando o lixo que está lá no ecrã, até que ele acontece que se depara com um byte contendo 0.

Para um programador Java, imagino que esta seja uma introdução bastante rude à falta de verificação do tipo de C. Acredita, esta é apenas a ponta do iceberg. É por isso que, embora eu aplauda o seu desejo de expandir seus horizontes aprendendo C, Eu altamente sugiro que você faça o que puder para evitar escrever programas reais nele.

(Isto vale para todos os outros que lêem isto também.)
 0
Author: T.E.D., 2010-01-29 15:45:37