Como usar o compilador C online
- Escreva ou cole um programa em C com uma função
mainno editor. Restaurar exemplo traz de volta o programa inicial. - Se o programa lê entrada com
scanf,getcharoufgets, digite-a na caixa Entrada (stdin), abaixo da saída, antes de executar. - Pressione Executar ou use Ctrl + Enter (⌘ + Enter no Mac). O código é compilado primeiro e depois executado, e as duas etapas aparecem no painel Saída.
- Escolha um limite de tempo de 5, 15 ou 60 segundos. Um loop infinito é interrompido quando o limite é atingido, e Parar encerra a execução na hora.
A primeira execução baixa o compilador, cerca de 30 MB. Seu navegador o guarda em cache e, depois disso, um programa típico compila em bem menos de um segundo. Use Copiar ou main.c para salvar seu arquivo-fonte, A− e A+ para mudar o tamanho do texto, o botão de layout para colocar o editor e a saída lado a lado ou empilhados, e Tela cheia (Ctrl/⌘ + Shift + F, Esc para sair) para ter mais espaço.
A compilação e a execução acontecem dentro do seu navegador. Seu código nunca é enviado a um servidor. O editor guarda seu último programa no armazenamento local do navegador, e em nenhum outro lugar.
Como funciona e o que é suportado
Este é um compilador de verdade, não um interpretador que imita C. A página roda o Clang/LLVM 21, ele próprio compilado para WebAssembly pelo projeto YoWASP. O Clang transforma main.c num programa WebAssembly (WASI), que o seu navegador então executa. As flags do compilador são:
clang main.c -std=c17 -O2 -Wall -lm -o main.wasm
- C17 com otimização (
-O2) e os avisos comuns (-Wall) ativados. - A biblioteca padrão do C da wasi-libc:
stdio.h,stdlib.h,string.h,ctype.h,stdint.h,time.he mais. A biblioteca matemática já vem vinculada, entãosqrt,powesindemath.hfuncionam sem você precisar adicionar-lm. - Diagnósticos exatos: erros e avisos aparecem como o Clang os imprime, com posições
main.c:linha:coluna. - Códigos de saída: se
mainretornar um valor diferente de 0, a saída termina com O processo terminou com o código N.
Limitações de uma sandbox no navegador:
- Sem threads.
pthread.hnão está disponível. - Sem sockets nem acesso à rede, e sem
forkouexec. - Sem sistema de arquivos real. Não é possível abrir arquivos do seu computador, então use o stdin ou dados no próprio código-fonte.
- Sem bibliotecas gráficas ou de interface, como SDL, OpenGL ou
conio.h/graphics.h. A saída é texto simples.
Erros comuns em C que o compilador ajuda a encontrar
Verifique o que o scanf retorna. Ele retorna a quantidade de valores lidos, não o valor em si. Se a caixa de stdin estiver vazia ou tiver texto onde se espera um número, a variável mantém o valor que tinha antes, que pode ser lixo. O programa inicial mostra o padrão seguro:
int n;
if (scanf("%d", &n) != 1) {
fprintf(stderr, "expected a number\n");
return 1; /* informado como código de saída 1 */
}
Combine os especificadores de formato do printf com os tipos. Use %d para int, %ld para long, %lld para long long, %zu para size_t, %f para double e %c para um caractere. Com -Wall, o Clang avisa sobre uma incompatibilidade, como imprimir um double com %d, então leia os avisos mesmo quando o programa roda.
Cuidado com o overflow de inteiros. Um int de 32 bits vai até 2.147.483.647, e o overflow de inteiros com sinal é comportamento indefinido em C. Com -O2, o otimizador pode supor que isso nunca acontece, então um loop com overflow pode se comportar de forma estranha em vez de simplesmente dar a volta. Use long long (ou int64_t de stdint.h) para fatoriais, somas e produtos grandes.
long long f = 1;
for (int i = 2; i <= 20; i++) f *= i;
printf("20! = %lld\n", f); /* 2432902008176640000 */
#include, por exemplo stdlib.h para malloc ou string.h para strlen.Perguntas frequentes
Qual compilador e qual padrão de C são usados?
Clang 21 (LLVM) no modo C17, com -O2 -Wall. A maior parte do código escrito para GCC compila sem alterações, desde que siga o C padrão e evite cabeçalhos específicos de plataforma.
Meu código é enviado para algum lugar?
Não. O próprio compilador roda no seu navegador, então o código-fonte, o programa compilado e a saída ficam todos no seu dispositivo.
Como passar dados de entrada para o meu programa?
Digite-a na caixa de stdin antes de pressionar Executar. Os valores podem ser separados por espaços ou quebras de linha, como quando você os digita num terminal. Quando a entrada acaba, scanf retorna EOF.
Por que meu programa para com uma mensagem de limite de tempo?
Ele rodou por mais tempo que o limite escolhido, o que geralmente indica um loop que nunca termina. Verifique a condição do loop ou escolha 60 s para cálculos realmente longos.
Posso compilar C++ aqui?
Use o compilador C++ online, que roda o mesmo Clang no modo C++20. Para outras linguagens, veja todos os compiladores online.
Atualizado