Hello World Como Você Nunca Viu! | Entendendo C



Se você nunca viu C ou como um programa funciona de verdade no baixo nível, hoje é sua chance de ver todo o básico de uma só vez!

Vou desde tipos primitivos, strings, arrays, stacks, heap, alocação de memória, structs, até minimamente entender o que está por baixo do que você chama de linguagem “orientada a objetos”.

ERRATAS

– em 00:06:50 falei errado o range de INT, o certo é de -128 a 127
– em 00:06:06 eu falei certo e deixei a correção escrita errada. 64 bits, se você não precisar, desperdiça 7 bytes
– em 00:40:54 eu falei que 255 bytes é 1/4 de 1 megabyte, mas é de 1 KILObyte.
– em 00:38:40 eu não sei como deixei passar, mas quando falo de passar o string pras funções `f1`, `f2` não está duplicando toda a string e sim a referência pra ela. Se fossem valores primitivos como `int` sim, mas array só o endereço duplica mesmo.
– em 00:57:55 quando dei copy e paste pro createPerson, eu esqueci de usar os argumentos pra fazer `person.age = age` por exemplo e ficou hardcoded. Viram?? Por isso copy e paste é perigoso, especialmente meia noite depois de estar cansado de passar 3 dias editando kkkkk`
– 00:45:20 64-bits são 8 bytes, toda hora na minha cabeça fica “4 bytes”, mas são 8

CONTEÚDO:

00:00:00 Intro
00:02:06 Strings
00:04:37 Inteiros
00:06:54 Two’s Complement
00:09:22 BigInteger
00:10:45 Pré-Float
00:13:47 Floats
00:17:27 0.1 + 0.2 != 0.3?
00:20:37 BigDecimal
00:22:17 Arrays
00:27:48 1o Hello World
00:28:37 Endereços e Referências
00:36:02 Contador de Programas e Pilha
00:41:03 Recursão
00:42:54 Ponteiros!
00:45:29 2o Hello World (com ponteiros)
00:48:52 Structs
00:49:47 3o Hello World (com struct)
00:52:25 Referências a Funções
00:55:26 4o Hello World (com callbacks)
00:59:57 5o Hello World (pseudo objetos)
01:05:05 Conclusão

LINKS:

* Integer (Wikipedia) (
* Two’s Complement (Wikipedia) (
* How numbers are encoded in JavaScript (
* FLOATING POINT VISUALLY EXPLAINED (
* What Every Computer Scientist Should Know About Floating-Point Arithmetic (What Every Computer Scientist Should Know About Floating-Point Arithmetic (oracle.com))
* IEEE-754 Floating Point Converter (IEEE-754 Floating Point Converter (h-schmidt.net))
* Number.MAX_SAFE_INTEGER (Number.MAX_SAFE_INTEGER – JavaScript | MDN (mozilla.org))
* Signed Binary/Decimal Conversion Using the Two’s Complement Representation (Signed Binary/Decimal Conversion (ubc.ca))
* C – Pointer arithmetic (C – Pointer arithmetic – Tutorialspoint)
* Why Discord is switching from Go to Rust (

Me siga nas redes sociais:

* Twitter (
* Instagram (
* Facebook (
* Podcasts (

Transcript:
Podcast:

source

48 Comments

  1. Eu me sentindo um pouco estagnado por programar em C longos anos, e Akita consegue me trazer novamente aquele sentimento de empolgação.
    Sua didática clareia toda lógica corriqueira de um programador engessado.

  2. estou no 2º periodo de ADS e to achando foda pra caralho, unico algoritimo que conhecia era o booble short que havia visto em um curso de python para analise de dados gratis da DSA (Data Science Academy), e muito foda, havia mergulhado nos seus videos anos atras e me encantei ainda mais por redes, voce é foda cara, queria uns professores que metralhassem conhecimento assim, tu joga no 1,5x e solta, mo legal hahahahahhahahahahahaha

  3. Bom demais os vídeos do Akita. Só um detalhe . No minuto 36 do vídeo, você fala que a as funções têm duplicatas da string "Hello World". Na verdade não tem. Em C, quando se passa um array como parâmetro para uma função, apenas o endereço do array é passado (por valor), não o array completo. Sempre.

    Para testar, basta alterar uma posição da string na função f2 (hello[3] = 'o';) e depois mandar imprimi-la na função main (após a chamada de f1). Você verá que a string criada em main foi alterada pela função f2. De modo que é a mesma string.

    Os endereços que você está imprimindo nas funções f1 e f2 são os endereços dos ponteiros para o array, não o endereço do próprio array.

  4. Galera, sugestão de ouro para vocês. "Computer Science as a programmer's perspective", conhecido como CS:APP.

    É um livro fenomenal sobre ciência da computação, mas com um olhar voltado para programadores. Leiam rapidamente o capítulo 1 (Visão geral) e estudem o capítulo 2(Onde começa de fato). Depois venham rever esse vídeo, muita coisa fará ainda mais sentido.

    Só tem em inglês, mas com tanta ferramentas que nós temos nos dias de hoje, eu poderia dizer basicamente: "se virem". Mas vou dar uma colher de chá, "IA tá aí pra isso" caso precisem de traduzir algum trecho do livro ou precisar de exemplos e demonstrações.

  5. 19:20 eu tive problemas em um programa onde fiz um loop onde um índice variava de 0 a 10 de 0,1 em 0,1. Não sei por que, o programa eu não lembro para que era, mas lembro que foi a primeira vez que me deparei com o fato que o computador não armazena 0,1 exatamente, e para fazer a comparação eu tinha que testar algo como 10 – i < 0.00001. Mas nunca contei para ver se o laço realmente era executado apenas 100 vezes.

    Não me pergunte o que eu estava fazendo no turbo pascal dos anos 1990. Nem eu lembro.

  6. Fabio Akita gosto muito dos seus vídeos, você é um excelente professor, dá gosto de ouvir suas explicações, que são claras e objetivas. O que mais gosto nos seus vídeos é que você explica com calma e em detalhes, dificilmente fico com dúvidas depois que assisto seus vídeos. Você já pensou em lançar um curso de programação ou curso relacionado a tecnlogia?

  7. Melhor aula da minha vida, cada dia a programação faz mais sentido. Sou dev a 3~4 anos, e sempre tive dúvidas e muitos porquês que nunca foram explicados, hoje consigo achar essas respostas estudando e nos vídeos incríveis do Akita. OBRIGADO DEMAIS CARA

    Deus te abençoe.

  8. Eu comecei ano passado a estudar python, não gostei e fui estudar Csharp. Estava avançado em Csharp mas tinha muita coisa que eu não fazia ideia de como funcionavam e pq funcionava daquela forma. Recentemente comecei a estudar C++ por conta propria e parece que a medida em que eu vou aprendendo os mesmo conceitos que eu aprendi em Csharp só que em c++ um mundo novo vai se abrindo na minha mente, cada assunto eu to entendo como funciona e pq funciona. Realmente o baixo/media nivel é muito bom, não pode ser deixado de lado.

  9. Meudeus, tudo para mim é novidade. Mas eu vou me comopremeter a aprender, quem sabe um dia eu não estou dando video aula,hoje eu tenho duvida, mas espero daqui a uns tempos ensinar outras pessoas pois irei doominar programação

  10. Dois períodos da faculdade de BCC na UFU, e esse vídeo ainda foi mais longe, pois lá nem falaram de ponteiro pra função, descobri q existia no sumário do livro The C programming language kkkkk, o Cara é fera, vai muito além do que você imagina

  11. Eu só queria saber qual o tempo de execução de máquina ao fazer operações matemáticas.
    Tipo; quantos ciclos de máquina a CPU faz a soma de 20+15.?
    ALGUÉM SABERIA ME DIZER SE (10+15=) É CALCULADO EM UM CICLO, OU PRA CADA BINÁRIO CUSTA 1 CICLO.
    Pois preciso o retorno EXATO de uma certa função, que nela há diversas operações matemáticas. E isso atrasa o retorno dentro de uma INTERRUPÇÃO auxiliar.
    Preciso saber EXATAMENTE O TEMPO DOS CÁLCULOS DESSA FUNÇÃO. É um sistema tipo RTOS mas em C++ escrito por mim mesmo.
    Quantos ciclos de clock a CPU precisa pra fazer UMA SOMA, OU UMA DIVISÃO de variáveis int.?????🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏
    POR FAVOR, FAÇA UM VÍDEO EXPLICANDO O TEMPO DE MÁQUINA EM OPERAÇÕES ARITMÉTICAS👍👍👍🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏🙏☕️☕️💰

  12. O complementar de um binário é o simétrico dele após o fim dos positivos e somando mais um por causa da existência do 0. Depois disso todos acima são os negativos até o limite que os de 8, 16, 32 ou 64 bits permitem.
    No caso de 8 bits, os positivos vão só até o 127 que é o 0111 1111 mais o 0 (zero não é negativo), portanto um total de 128 números não negativos, por isso o simétrico acima desse ponto é também 128 números que começam todos com 1 e portanto são os negativos indo até o equivalente ao positivo 255 que é 1111 1111 e é o -128. Por isso você inverte todos os bits e depois por existir o 0 tem que somar um (no byte todo, é somar, não trocar o último bit), faça isso no caso de ter os números em binários, mas se você tem em mãos os valores decimais é só subtrair o valor de 256 e aí converter o resultado em binário, assim o complementar de 5 é 256 – 5 = 251 cujo binário é 1111 1011 para conseguir um binário a partir de um decimal faça a fatoração por 2 anotando 1 quando tem resto e 0 quando não e a ordem é anotar 1 ou 0 da direita para a esquerda que você tem o binário correto, não inverta. Melhor usar uma caluladora com essa função de conversão, você encontra para celular, a Hyper Calc é a mais completa que conheço, na conversão por fatoração é fácil se enganar. Em automação ainda se tem que mexer com binário de 8 ou 16 bits testando sinal de sensor, na computação atual você mexe no máximo com os hexa.

Leave a Reply

Your email address will not be published. Required fields are marked *

You might like

© 2026 Cantinho do Vídeo - WordPress Video Theme by WPEnjoy