<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C Tutorial &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/es/category/c-tutorial-es/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Estudio Independiente de Desarrollo de Software</description>
	<lastBuildDate>Sun, 05 Jul 2026 04:50:00 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>C Tutorial &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>La función printf</title>
		<link>https://www.foxdevelop.com/es/2026/07/05/la-funcion-printf/</link>
					<comments>https://www.foxdevelop.com/es/2026/07/05/la-funcion-printf/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Sun, 05 Jul 2026 04:50:00 +0000</pubDate>
				<category><![CDATA[C Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3373</guid>

					<description><![CDATA[La función printf ¿Por qué debemos entender y dominar esta función primero? Porque la usaremos muchísimo durante el aprendizaje posterior de C, y sirve para imprimir contenido en la consola. ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">La función printf</h3>



<p class="wp-block-paragraph">¿Por qué debemos entender y dominar esta función primero? Porque la usaremos muchísimo durante el aprendizaje posterior de C, y sirve para imprimir contenido en la consola.</p>



<h4 class="wp-block-heading">1 Función printf</h4>



<p class="wp-block-paragraph">Ya la usamos en el ejemplo anterior.</p>


<pre class="wp-block-code"><span><code class="hljs language-arduino shcb-code-table shcb-line-numbers"><span class='shcb-loc'><span><span class="hljs-comment">// Llamada a printf para imprimir cadena, \n significa salto de línea</span>
</span></span><span class='shcb-loc'><span><span class="hljs-built_in">printf</span>(<span class="hljs-string">"hello, world\n"</span>);
</span></span></code></span></pre>


<p class="wp-block-paragraph"><code>printf()</code> Función estándar de impresión de biblioteca</p>



<p class="wp-block-paragraph"><code>printf("contenido")</code> le pasa una cadena como parámetro; imprime todos los caracteres entre las comillas dobles en la consola.</p>



<p class="wp-block-paragraph">Toda instrucción debe terminar con punto y coma <code>;</code>, marca el final de una sentencia. Olvidarlo causa error de compilación. Mira el siguiente mensaje de error:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">C:\cdemo&gt;gcc hello.c -o hello.exe
hello.c: In <span class="hljs-function"><span class="hljs-keyword">function</span> '<span class="hljs-title">main</span>':
<span class="hljs-title">hello</span>.<span class="hljs-title">c</span>:5:29: <span class="hljs-title">error</span>: <span class="hljs-title">expected</span> '</span>;<span class="hljs-string">' before '</span><span class="hljs-keyword">return</span><span class="hljs-string">'
     printf("hello, world\n")
                             ^
                             ;
     return 0;
     ~~~~~~</span></code></span></pre>


<p class="wp-block-paragraph">Si queremos imprimir texto en varias líneas, podemos escribir así:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#include &lt;stdio.h&gt;</span>
main()
{
    printf(<span class="hljs-string">"Texto primera línea\n"</span>);
    printf(<span class="hljs-string">"Texto segunda línea\n"</span>);
}</code></span></pre>


<h4 class="wp-block-heading">2 Cadena de caracteres</h4>



<p class="wp-block-paragraph">Secuencia de caracteres envuelta por <strong>comillas dobles en inglés <code>" "</code></strong>, como <code>"hello, world\n"</code></p>



<p class="wp-block-paragraph">En los ejemplos anteriores, las cadenas se usaban como parámetro de printf para imprimirse directamente en la consola.</p>



<p class="wp-block-paragraph">No se puede partir una cadena con salto de línea al escribir, el siguiente código dará error de compilación directamente:</p>


<pre class="wp-block-code"><span><code class="hljs language-arduino shcb-code-table shcb-line-numbers"><span class='shcb-loc'><span><span class="hljs-comment">// Ejemplo incorrecto: cadena dividida en dos líneas</span>
</span></span><span class='shcb-loc'><span><span class="hljs-built_in">printf</span>(<span class="hljs-string">"hello, world</span>
</span></span><span class='shcb-loc'><span><span class="hljs-string">"</span>);
</span></span></code></span></pre>


<p class="wp-block-paragraph">Salida del error de compilación</p>


<pre class="wp-block-code"><span><code class="hljs language-php">C:\cdemo&gt;gcc hello.c -o hello.exe
hello.c: In <span class="hljs-function"><span class="hljs-keyword">function</span> '<span class="hljs-title">main</span>':
<span class="hljs-title">hello</span>.<span class="hljs-title">c</span>:6:11: <span class="hljs-title">warning</span>: <span class="hljs-title">missing</span> <span class="hljs-title">terminating</span> " <span class="hljs-title">character</span>
    <span class="hljs-title">printf</span><span class="hljs-params">(<span class="hljs-string">"hello, world
           ^
hello.c:6:11: error: missing terminating "</span> character
    printf<span class="hljs-params">(<span class="hljs-string">"hello, world
           ^~~~~~~~~~~~~
hello.c:7:4: warning: missing terminating "</span> character
    <span class="hljs-string">");
    ^
hello.c:7:4: error: missing terminating "</span> character
    <span class="hljs-string">");
    ^~~
hello.c:8:5: error: expected expression before 'return'
     return 0;
     ^~~~~~
hello.c:8:14: error: expected ';' before '}' token
     return 0;
              ^
              ;
 }</span></span></span></span></code></span></pre>


<h4 class="wp-block-heading">3 Carácter de escape <code>\n</code> salto de línea</h4>



<p class="wp-block-paragraph"><code>\n</code> es una marca exclusiva del lenguaje C que representa el <strong>carácter de salto de línea</strong>;</p>



<p class="wp-block-paragraph">printf no salta línea automáticamente, hay que añadir manualmente <code>\n</code> para que el cursor pase a la fila siguiente;</p>



<p class="wp-block-paragraph">Sin \n todo se mostrará en una sola línea, mira el ejemplo a continuación</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#include &lt;stdio.h&gt;</span>

int main()
{
    <span class="hljs-comment">// Sin \n: dos textos pegados en la misma línea</span>
    printf(<span class="hljs-string">"hello"</span>);
    printf(<span class="hljs-string">"world"</span>);

    <span class="hljs-comment">// Con \n: salto automático tras imprimir</span>
    printf(<span class="hljs-string">"\nhello\n"</span>);
    printf(<span class="hljs-string">"world\n"</span>);

    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></span></pre>

<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.exe</span>

<span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;<span class="hljs-selector-tag">hello</span>
<span class="hljs-selector-tag">helloworld</span>
<span class="hljs-selector-tag">hello</span>
<span class="hljs-selector-tag">world</span>

<span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;</code></span></pre>


<p class="wp-block-paragraph">hello y world se imprimen pegados en la misma línea. Por lo tanto, si usas printf y quieres saltar de línea, recuerda poner \n. Un \n equivale a pulsar Enter una vez; dos \n consecutivos suponen dos saltos de línea, dejando una línea vacía entre las cadenas, igual que pulsar Enter dos veces en el bloc de notas.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#include &lt;stdio.h&gt;</span>

int main()
{
    printf(<span class="hljs-string">"one\n\n"</span>);
    printf(<span class="hljs-string">"two"</span>);
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}</code></span></pre>


<p class="wp-block-paragraph">Resultado de ejecución</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.exe</span>

<span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;<span class="hljs-selector-tag">hello</span>
<span class="hljs-selector-tag">one</span>

<span class="hljs-selector-tag">two</span>
<span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;</code></span></pre>


<p class="wp-block-paragraph">Impresión concatenada en varias partes: varios printf para formar una sola línea</p>



<p class="wp-block-paragraph">Mira el ejemplo</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#include &lt;stdio.h&gt;</span>

int main()
{
    printf(<span class="hljs-string">"hello, "</span>);
    printf(<span class="hljs-string">"world"</span>);
    printf(<span class="hljs-string">"\n"</span>); <span class="hljs-comment">// Salto de línea al final</span>
}</code></span></pre>


<figure class="wp-block-image size-full"><img decoding="async" width="301" height="110" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-108.png" alt="" class="wp-image-2161"/></figure>



<h4 class="wp-block-heading">Complemento de errores frecuentes</h4>



<pre class="wp-block-preformatted">#include &lt;stdio.h></pre>



<p class="wp-block-paragraph">La línea anterior importa el archivo de cabecera mediante preprocesador, no lleva punto y coma al final ;</p>



<p class="wp-block-paragraph">Para usar la función printf hay que importar <code>#include &lt;stdio.h></code> o se producirá un error</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/07/05/la-funcion-printf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Explicación del primer programa en C</title>
		<link>https://www.foxdevelop.com/es/2026/07/05/explicacion-del-primer-programa-en-c/</link>
					<comments>https://www.foxdevelop.com/es/2026/07/05/explicacion-del-primer-programa-en-c/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Sun, 05 Jul 2026 04:23:15 +0000</pubDate>
				<category><![CDATA[C Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3356</guid>

					<description><![CDATA[Explicación del primer programa en C En la clase anterior instalamos el compilador GCC y creamos el ejemplo más simple de hello world. En esta lección vamos a analizar este ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Explicación del primer programa en C</h3>



<p class="wp-block-paragraph">En la clase anterior instalamos el compilador GCC y creamos el ejemplo más simple de hello world. En esta lección vamos a analizar este ejemplo línea por línea. Primero veamos el código:</p>


<pre class="wp-block-code"><span><code class="hljs language-arduino shcb-code-table shcb-line-numbers"><span class='shcb-loc'><span><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span>
</span></span><span class='shcb-loc'><span>
</span></span><span class='shcb-loc'><span><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>
</span></span><span class='shcb-loc'><span><span class="hljs-function"></span>{
</span></span><span class='shcb-loc'><span>    <span class="hljs-built_in">printf</span>(<span class="hljs-string">"hello, world\n"</span>);
</span></span><span class='shcb-loc'><span>    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
</span></span><span class='shcb-loc'><span>}
</span></span></code></span></pre>


<p class="wp-block-paragraph">El código es muy sencillo, solo sirve para imprimir una línea de texto.</p>



<p class="wp-block-paragraph">A continuación analizaremos cada línea del código de arriba hacia abajo.</p>



<h4 class="wp-block-heading">1. <code>#include &lt;stdio.h></code></h4>



<p class="wp-block-paragraph">En la primera clase mencionamos brevemente el preprocesado, y esta primera línea es una instrucción de preprocesado. ¿Cómo lo sabemos? Por el símbolo <code>#</code>.</p>



<p class="wp-block-paragraph"><code>#</code>: Marcador de instrucción de preprocesado, enviado al <strong>preprocesador</strong> y ejecutado en el primer paso de la compilación.</p>



<p class="wp-block-paragraph"><code>include</code>: Palabra clave para importar archivos de cabecera, su función es copiar todo el código del archivo indicado dentro del programa actual.</p>



<p class="wp-block-paragraph"><code>&lt;stdio.h></code>: Archivo de cabecera estándar de entrada y salida (standard input output). Contiene funciones para imprimir en pantalla y leer entradas del teclado, la función <code>printf</code> que usamos más abajo está definida aquí.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Estrictamente hablando, el preprocesado no forma parte de la sintaxis del lenguaje C. <strong>El preprocesado de C no es un componente de la sintaxis central de C</strong>, es una etapa independiente que el compilador ejecuta antes de la compilación propiamente dicha. Forma parte del flujo completo de compilación, pero no pertenece al sistema sintáctico y semántico nativo del lenguaje C.</p>
</blockquote>



<p class="wp-block-paragraph">En resumen, un programa de preprocesado separado realiza sustituciones de texto. En este caso, <code>#include &lt;stdio.h></code> reemplaza esta línea por todo el contenido del archivo stdio.h. Supongamos que stdio.h solo tuviera el texto AAAAAAAAA.</p>



<p class="wp-block-paragraph">Entonces, antes de pasar el código al compilador, quedaría así:</p>


<pre class="wp-block-code"><span><code class="hljs language-arduino shcb-code-table shcb-line-numbers"><span class='shcb-loc'><span> <span class="hljs-function">AAAAAAAAA</span>
</span></span><span class='shcb-loc'><span><span class="hljs-function"></span>
</span></span><span class='shcb-loc'><span><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>
</span></span><span class='shcb-loc'><span><span class="hljs-function"></span>{
</span></span><span class='shcb-loc'><span>    <span class="hljs-built_in">printf</span>(<span class="hljs-string">"hello, world\n"</span>);
</span></span><span class='shcb-loc'><span>    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
</span></span><span class='shcb-loc'><span>}
</span></span></code></span></pre>


<p class="wp-block-paragraph">Por supuesto esto es solo una hipótesis, el contenido real del archivo de cabecera es mucho más complejo. Los curiosos pueden abrir el archivo para revisarlo.</p>



<p class="wp-block-paragraph">Este archivo de cabecera se guarda en tu ordenador, la ruta varía según el sistema operativo:</p>



<pre class="wp-block-preformatted">Sistemas Linux/Unix: Normalmente en /usr/include/stdio.h<br><br>Windows (Visual Studio): En VC/include/stdio.h<br><br>macOS (Xcode): En /Applications/Xcode.app/.../usr/include/stdio.h</pre>



<p class="wp-block-paragraph">Puedes usar herramientas de búsqueda para localizar este archivo en tu equipo.</p>



<p class="wp-block-paragraph">¿Ahora entiendes básicamente cómo funciona el preprocesado?</p>



<p class="wp-block-paragraph">Si eliminas la línea <code>#include &lt;stdio.h></code>, el compilador no reconocerá <code>printf</code> y generará un error. Prueba a borrar esta línea y compilar con gcc para ver el resultado.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="305" height="126" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-106.png" alt="" class="wp-image-2155" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-106.png 305w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-106-300x124.png 300w" sizes="(max-width: 305px) 100vw, 305px" /><figcaption class="wp-element-caption">Después de borrar el archivo de cabecera</figcaption></figure>



<p class="wp-block-paragraph">Al volver a compilar aparecerá un mensaje de error</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="802" height="215" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-107.png" alt="" class="wp-image-2156" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-107.png 802w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-107-300x80.png 300w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-107-768x206.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></figure>



<h4 class="wp-block-heading">2. <code>int main()</code></h4>



<p class="wp-block-paragraph"><code>main</code> = Función de <strong>punto de entrada</strong> de los programas C</p>



<ol class="wp-block-list">
<li>Al ejecutar cualquier programa C, el sistema operativo empieza automáticamente por la función <code>main</code>. <strong>Solo puede existir una única función main por programa.</strong></li>


<li><code>int</code>: Tipo de valor devuelto por la función, abreviatura de integer (entero).</li>


<li><code>()</code>: Indica que se trata de una función; dentro se pueden escribir parámetros, los paréntesis vacíos significan que no recibe parámetros.</li>
</ol>



<p class="wp-block-paragraph">Esta sintaxis de main se heredó en la mayoría de lenguajes de programación posteriores, es el único punto de arranque del programa. Al hacer doble clic en un archivo exe o ejecutar un comando en la terminal (como hello), el sistema operativo llama automáticamente a esta función main.</p>



<p class="wp-block-paragraph">El int del principio indica el tipo de retorno de la función. Más adelante, cuando definamos nuestras propias funciones, tendremos que especificar siempre este tipo, lo veremos en clases posteriores.</p>



<p class="wp-block-paragraph">Los paréntesis () sirven para declarar los parámetros que acepta la función; aquí están vacíos, así que no recibe ninguno. También existe una versión con parámetros:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">int</span> <span class="hljs-selector-tag">main</span>(<span class="hljs-selector-tag">int</span> <span class="hljs-selector-tag">argc</span>, <span class="hljs-selector-tag">char</span> *<span class="hljs-selector-tag">argv</span><span class="hljs-selector-attr">&#91;]</span>)</code></span></pre>


<p class="wp-block-paragraph">Esta escritura acepta dos parámetros: uno de tipo entero y un array de cadenas, lo explicaremos en próximas lecciones.</p>



<p class="wp-block-paragraph">Los parámetros de main los envía el sistema operativo, ¿de dónde salen esos valores?</p>



<p class="wp-block-paragraph">Seguramente has usado herramientas de línea de comandos como el comando ping. Por ejemplo, ping 12.36.4.xxx comprueba la conexión de red: ping corresponde al programa ping.exe, y la dirección IP 12.36.4.xxx es un parámetro enviado a la función main de ping.exe.</p>



<p class="wp-block-paragraph">Igual con nuestro programa hello: si ejecutas hello abc en la terminal, abc se pasa como parámetro. Las variables dentro de los paréntesis de main reciben estos valores introducidos por el usuario y transmitidos por el sistema operativo.</p>



<p class="wp-block-paragraph">Recuerda esto por ahora: main es el único punto de entrada del programa, solo puede haber una, el sistema operativo la invoca y le pasa los argumentos de la línea de comandos.</p>



<h4 class="wp-block-heading">3. <code>{ }</code> Llaves</h4>



<p class="wp-block-paragraph">Delimitan el cuerpo de la función: <code>{</code> marca el inicio del código de la función, <code>}</code> el final. Todo el código de la función va entre ambas llaves.</p>



<h4 class="wp-block-heading">4. <code>printf("hello, world\n");</code></h4>



<ul class="wp-block-list">
<li><code>printf</code>: Abreviatura de print format, función de impresión formateada que muestra texto en la consola.</li>


<li>Comillas dobles <code>" "</code>: Encierran una <strong>cadena constante</strong>, el texto que queremos imprimir va dentro.</li>


<li><code>\n</code>: Carácter de escape, salto de línea: después de imprimir el texto, el cursor pasa automáticamente a la línea siguiente.</li>


<li><code>;</code>: Marcador de fin de instrucción en C. Cada instrucción ejecutable debe terminar en punto y coma; si se olvida, habrá error de compilación.</li>
</ul>



<p class="wp-block-paragraph">La letra f al final del nombre de la función significa format (formato), lo profundizaremos más adelante. Por ahora entiende que esta línea muestra el texto <code>hello, world\n</code> en consola y que \n añade un salto de línea automático.</p>



<h4 class="wp-block-heading">5. <code>return 0;</code></h4>



<ul class="wp-block-list">
<li><code>return</code>: Devuelve un valor entero a la función <code>main</code> y finaliza su ejecución. ¿Por qué hace falta return? Porque declaramos que main devuelve int, así que debemos retornar un entero dentro de la función.</li>


<li><code>0</code>: Convención estándar que significa que el programa terminó <strong>correctamente sin errores</strong>, informa al sistema operativo del estado de ejecución.
<ul class="wp-block-list">
<li>Devolver <code>0</code> = Ejecución exitosa del programa</li>


<li>Devolver un número distinto de 0 (ej: <code>return 1;</code>) = Finalización anómala con error</li>
</ul>
</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Los estándares C modernos permiten omitir <code>return 0;</code> al final de main, el compilador lo agrega automáticamente. No obstante, se recomienda escribirlo explícitamente a los principiantes para seguir las convenciones.</p>
</blockquote>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/07/05/explicacion-del-primer-programa-en-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compiladores de C y nuestro primer programa en C</title>
		<link>https://www.foxdevelop.com/es/2026/07/04/compiladores-de-c-y-nuestro-primer-programa-en-c/</link>
					<comments>https://www.foxdevelop.com/es/2026/07/04/compiladores-de-c-y-nuestro-primer-programa-en-c/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Sat, 04 Jul 2026 12:56:26 +0000</pubDate>
				<category><![CDATA[C Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3326</guid>

					<description><![CDATA[Hello, World! es el ejemplo que aprenden casi todos los programadores al iniciarse en la programación. Este ejemplo fue creado originalmente por uno de los autores del libro clásico de ...]]></description>
										<content:encoded><![CDATA[


<p class="wp-block-paragraph">Hello, World! es el ejemplo que aprenden casi todos los programadores al iniciarse en la programación. Este ejemplo fue creado originalmente por uno de los autores del libro clásico de C <em>The C Programming Language (Second Edition)</em> (KR2). Después se extendió por todo el mundo y, hasta el día de hoy, el primer ejemplo de prácticamente cualquier lenguaje de programación es este mismo.</p>



<p class="wp-block-paragraph">Hoy también usaremos este ejemplo para escribir nuestro primer programa en C.</p>



<p class="wp-block-paragraph">Antes de escribir código en C, debemos descargar un compilador: <a href="https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-win32/sjlj/i686-8.1.0-release-win32-sjlj-rt_v6-rev0.7z/download">Download i686-8.1.0-release-win32-sjlj-rt_v6-rev0.7z (MinGW-w64 &#8211; for 32 and 64 bit Windows)</a>. ¿Qué es un compilador?</p>



<h3 class="wp-block-heading">¿Qué es un compilador?</h3>



<p class="wp-block-paragraph">El ordenador <strong>solo reconoce los números binarios 0 y 1</strong>, no entiende el código C/C++, Python, Java ni otros lenguajes escritos por humanos. El compilador es una <strong>herramienta de traducción</strong>: convierte todo de una vez el <strong>código de alto nivel legible para humanos</strong> en un <strong>lenguaje máquina ejecutable directamente por la CPU (archivo binario exe)</strong>.</p>



<p class="wp-block-paragraph">Es decir, el compilador transforma el código C escrito por personas en órdenes de 0 y 1 que el equipo puede interpretar; solo estas instrucciones pueden ser ejecutadas por la CPU. Sin un compilador, tu código C no es distinto de un texto plano. Se puede decir que la esencia de cada lenguaje de programación es su compilador correspondiente; todas las reglas y sintaxis definidas por el lenguaje se implementan mediante el compilador.</p>



<p class="wp-block-paragraph">Descarga el compilador para Windows desde el enlace anterior. Ten en cuenta que el compilador cc se usa solo en sistemas Unix, mientras que en Windows utilizamos GCC.</p>



<h3 class="wp-block-heading">Compiladores del lenguaje C</h3>



<h4 class="wp-block-heading">1 GCC</h4>



<p class="wp-block-paragraph">Su nombre completo es GNU Compiler Collection, es gratuito y de código abierto, compatible con C/C++/Objective-C y multiplataforma (Windows/Linux/macOS).</p>



<p class="wp-block-paragraph">MinGW-w64 es un paquete de herramientas que incluye el compilador GCC.</p>



<h4 class="wp-block-heading">2 Clang (LLVM)</h4>



<p class="wp-block-paragraph">Basado en la arquitectura LLVM, es el compilador oficial por defecto de Apple (macOS/iOS) y también se puede instalar en Windows.</p>



<h4 class="wp-block-heading">3 MSVC</h4>



<p class="wp-block-paragraph">Microsoft Visual C++, el compilador nativo oficial de Microsoft para Windows, integrado en Visual Studio al instalarlo. También se puede usar con Qt.</p>



<p class="wp-block-paragraph">Herramienta de línea de comandos: cl.exe</p>



<h4 class="wp-block-heading">4 Tiny C Compiler</h4>



<p class="wp-block-paragraph">Permite ejecutar código C directamente sin generar un archivo exe (similar a un lenguaje de secuencias de comandos).</p>



<p class="wp-block-paragraph">Existen otros compiladores de C que no enumeraremos aquí; algunos incluso han quedado obsoletos, como Turbo C.</p>



<p class="wp-block-paragraph">Durante la etapa de aprendizaje, puedes empezar usando el gcc incluido en MinGW-w64 y, más adelante, utilizar MSVC con Visual Studio para desarrollar en C.</p>



<h3 class="wp-block-heading">Instalar MinGW</h3>



<p class="wp-block-paragraph">Si el enlace anterior no funciona para descargar, usa este otro: <a href="https://sourceforge.net/projects/mingw-w64/files/latest/download">Download MinGW-w64 &#8211; for 32 and 64 bit Windows</a></p>



<p class="wp-block-paragraph">Después de descargar, descomprime el archivo:</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="500" height="530" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-98.png" alt="" class="wp-image-2141" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-98.png 500w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-98-283x300.png 283w" sizes="auto, (max-width: 500px) 100vw, 500px" /><figcaption class="wp-element-caption">Directorio tras descomprimir MinGW</figcaption></figure>



<p class="wp-block-paragraph">Verás que contiene gcc.exe, este es nuestro compilador y solo ocupa 1,77 MB.</p>



<p class="wp-block-paragraph">Copia todo el contenido en una carpeta, por ejemplo la ruta del autor: D:\mingw64, puedes elegir otro directorio si prefieres.</p>



<p class="wp-block-paragraph">Luego configura esta ruta en la variable de entorno Path</p>



<ul class="wp-block-list">
<li>Haz clic derecho en «Este equipo» → <strong>Propiedades</strong></li>



<li>A la derecha «Configuración avanzada del sistema» → pestaña «Opciones avanzadas»</li>



<li>Pestaña → <strong>Variables de entorno</strong>, en «Variables del sistema» busca <code>Path</code>, haz doble clic para editar, pulsa «Nuevo» y pega la ruta: D:\mingw64\bin</li>



<li>Pulsa <strong>Aceptar</strong> en todas las ventanas para guardar los cambios</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="357" height="303" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-101.png" alt="" class="wp-image-2144" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-101.png 357w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-101-300x255.png 300w" sizes="auto, (max-width: 357px) 100vw, 357px" /></figure>



<p class="wp-block-paragraph">Ten cuidado: dentro de D:\mingw64\bin debe estar el archivo gcc.exe. En algunos paquetes descargados, existe una subcarpeta bin interna donde se encuentra gcc.exe.</p>



<h4 class="wp-block-heading">Comprobar si GCC se instaló correctamente</h4>



<p class="wp-block-paragraph">Abre el símbolo del sistema CMD y ejecuta los siguientes comandos</p>


<pre class="wp-block-code"><span><code class="hljs">gcc --version
o también
g++ --version</code></span></pre>


<p class="wp-block-paragraph">Si aparece el siguiente texto, la instalación es correcta</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">Users</span>\<span class="hljs-selector-tag">Jack</span>&gt;<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">--version</span>
<span class="hljs-selector-tag">gcc</span> (<span class="hljs-selector-tag">i686-win32-sjlj-rev0</span>, <span class="hljs-selector-tag">Built</span> <span class="hljs-selector-tag">by</span> <span class="hljs-selector-tag">MinGW-W64</span> <span class="hljs-selector-tag">project</span>) 8<span class="hljs-selector-class">.1</span><span class="hljs-selector-class">.0</span>
<span class="hljs-selector-tag">Copyright</span> (<span class="hljs-selector-tag">C</span>) 2018 <span class="hljs-selector-tag">Free</span> <span class="hljs-selector-tag">Software</span> <span class="hljs-selector-tag">Foundation</span>, <span class="hljs-selector-tag">Inc</span>.
<span class="hljs-selector-tag">This</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">free</span> <span class="hljs-selector-tag">software</span>; <span class="hljs-selector-tag">see</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">source</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">copying</span> <span class="hljs-selector-tag">conditions</span>.  <span class="hljs-selector-tag">There</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">NO</span>
<span class="hljs-selector-tag">warranty</span>; <span class="hljs-selector-tag">not</span> <span class="hljs-selector-tag">even</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">MERCHANTABILITY</span> <span class="hljs-selector-tag">or</span> <span class="hljs-selector-tag">FITNESS</span> <span class="hljs-selector-tag">FOR</span> <span class="hljs-selector-tag">A</span> <span class="hljs-selector-tag">PARTICULAR</span> <span class="hljs-selector-tag">PURPOSE</span>.
</code></span></pre>

<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">Users</span>\<span class="hljs-selector-tag">Jack</span>&gt;<span class="hljs-selector-tag">g</span>++ <span class="hljs-selector-tag">--version</span>
<span class="hljs-selector-tag">g</span>++ (<span class="hljs-selector-tag">i686-win32-sjlj-rev0</span>, <span class="hljs-selector-tag">Built</span> <span class="hljs-selector-tag">by</span> <span class="hljs-selector-tag">MinGW-W64</span> <span class="hljs-selector-tag">project</span>) 8<span class="hljs-selector-class">.1</span><span class="hljs-selector-class">.0</span>
<span class="hljs-selector-tag">Copyright</span> (<span class="hljs-selector-tag">C</span>) 2018 <span class="hljs-selector-tag">Free</span> <span class="hljs-selector-tag">Software</span> <span class="hljs-selector-tag">Foundation</span>, <span class="hljs-selector-tag">Inc</span>.
<span class="hljs-selector-tag">This</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">free</span> <span class="hljs-selector-tag">software</span>; <span class="hljs-selector-tag">see</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">source</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">copying</span> <span class="hljs-selector-tag">conditions</span>.  <span class="hljs-selector-tag">There</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">NO</span>
<span class="hljs-selector-tag">warranty</span>; <span class="hljs-selector-tag">not</span> <span class="hljs-selector-tag">even</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">MERCHANTABILITY</span> <span class="hljs-selector-tag">or</span> <span class="hljs-selector-tag">FITNESS</span> <span class="hljs-selector-tag">FOR</span> <span class="hljs-selector-tag">A</span> <span class="hljs-selector-tag">PARTICULAR</span> <span class="hljs-selector-tag">PURPOSE</span>.</code></span></pre>


<p class="wp-block-paragraph">Ambos comandos funcionan perfectamente. Una vez confirmado, crearemos nuestro primer programa C.</p>



<p class="wp-block-paragraph">Crea una carpeta llamada cdemo en la raíz de la unidad C o cualquier otra unidad, luego crea un archivo de texto y renómbralo hello.c</p>



<p class="wp-block-paragraph">Abre hello.c con el bloc de notas y pega el siguiente código</p>


<pre class="wp-block-code"><span><code class="hljs language-cal">#include &lt;stdio.h&gt;

int main()
{
    printf(<span class="hljs-string">"hello, world\n"</span>);
    return <span class="hljs-number">0</span>;
}</code></span></pre>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="647" height="29" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-100.png" alt="" class="wp-image-2143" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-100.png 647w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-100-300x13.png 300w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-100-640x29.png 640w" sizes="auto, (max-width: 647px) 100vw, 647px" /></figure>



<p class="wp-block-paragraph">Abre CMD y usa el comando cd para navegar hasta esa carpeta</p>



<p class="wp-block-paragraph">Ejecuta el comando GCC para compilar: compilar significa transformar el código anterior en instrucciones binarias 0 y 1 legibles por el ordenador.</p>



<h4 class="wp-block-heading">Compilar y ejecutar</h4>



<p class="wp-block-paragraph">Abre CMD y navega al directorio del código</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">C</span>:\<span class="hljs-selector-tag">cdemo</span>&gt;<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span></code></span></pre>


<p class="wp-block-paragraph">Al ejecutar este comando no aparecerá ningún mensaje en pantalla</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="238" height="63" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-102.png" alt="" class="wp-image-2145"/></figure>



<p class="wp-block-paragraph">Pero en la carpeta aparecerá un archivo nuevo llamado a.exe.</p>



<p class="wp-block-paragraph">Este es nuestro programa compilado, ¿cómo ejecutarlo?</p>



<p class="wp-block-paragraph">Solo escribe a, no hace falta añadir la extensión <strong>.exe</strong></p>


<pre class="wp-block-code"><span><code class="hljs">C:\cdemo&gt;a
hello, world</code></span></pre>


<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="250" height="150" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-103.png" alt="" class="wp-image-2146"/><figcaption class="wp-element-caption">Todo el proceso de compilación y ejecución</figcaption></figure>



<h4 class="wp-block-heading">Especificar el nombre del archivo ejecutable</h4>



<p class="wp-block-paragraph">El nombre a es el valor por defecto cuando no indicamos ningún nombre al compilar.</p>



<p class="wp-block-paragraph">Con el siguiente comando puedes definir el nombre del archivo exe generado</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.exe</span></code></span></pre>


<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="307" height="121" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-104.png" alt="" class="wp-image-2147" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-104.png 307w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-104-300x118.png 300w" sizes="auto, (max-width: 307px) 100vw, 307px" /></figure>



<p class="wp-block-paragraph">Abre la carpeta y verás hello.exe, puedes cambiarlo por cualquier otro nombre.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="409" height="90" src="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-105.png" alt="" class="wp-image-2148" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/06/image-105.png 409w, https://www.foxdevelop.com/wp-content/uploads/2026/06/image-105-300x66.png 300w" sizes="auto, (max-width: 409px) 100vw, 409px" /></figure>



<p class="wp-block-paragraph">Hasta aquí esta lección. Repite todo el proceso por tu cuenta para entender el compilador y el ciclo completo de <strong>escritura, compilación y ejecución</strong> de un programa.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/07/04/compiladores-de-c-y-nuestro-primer-programa-en-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Qué es el lenguaje C</title>
		<link>https://www.foxdevelop.com/es/2026/06/19/que-es-el-lenguaje-c/</link>
					<comments>https://www.foxdevelop.com/es/2026/06/19/que-es-el-lenguaje-c/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 19 Jun 2026 03:00:02 +0000</pubDate>
				<category><![CDATA[C Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=2129</guid>

					<description><![CDATA[C es un lenguaje de programación generalista creado en 1972 para el sistema operativo UNIX. El propio sistema y la mayoría de sus programas complementarios están escritos en C. Sin embargo, no está ligado exclusivamente a UNIX y se ]]></description>
										<content:encoded><![CDATA[

<h3 class="wp-block-heading">I. ¿Qué es C?</h3>



<p class="wp-block-paragraph">C es un lenguaje de programación generalista creado en 1972 para el sistema operativo UNIX. El propio sistema y la mayoría de sus programas complementarios están escritos en C. Sin embargo, no está ligado exclusivamente a UNIX y se puede usar en cualquier ordenador o sistema. Se le suele llamar «lenguaje de programación de sistemas», ya que sirve para crear sistemas operativos y compiladores, además de todo tipo de software común.</p>



<p class="wp-block-paragraph">C evolucionó a partir del lenguaje B (derivado de BCPL). Tanto B como BCPL son lenguajes sin tipos, mientras que C incorpora un sistema completo de tipos de datos.</p>



<h3 class="wp-block-heading">II. Características principales</h3>



<h4 class="wp-block-heading">1) Amplia variedad de tipos de datos</h4>



<p class="wp-block-paragraph">Comparado con su antecesor B, C cuenta con una gran diversidad de tipos de datos.</p>



<p class="wp-block-paragraph">Tipos básicos: caracteres, números enteros de varios tamaños, números de punto flotante (decimales)</p>



<p class="wp-block-paragraph">Tipos derivados: punteros, arrays, estructuras y uniones. Los punteros permiten manipular direcciones de memoria directamente, independientemente de la arquitectura del hardware.</p>



<p class="wp-block-paragraph">Reglas: Los operadores se combinan para formar expresiones; cualquier expresión como una asignación o una llamada a función puede ser una instrucción completa por sí sola.</p>



<h4 class="wp-block-heading">2) Control completo del flujo del programa</h4>



<p class="wp-block-paragraph">Incluye bifurcaciones condicionales (if-else), selección múltiple (switch), dos tipos de bucles (while/for que comprueban la condición antes de ejecutarse, do que la comprueba después de ejecutarse), salida anticipada de bucles (break) y más. Estas instrucciones de flujo permiten crear lógicas de programa muy variadas.</p>



<h4 class="wp-block-heading">3) Funciones</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Una función es <strong>un conjunto empaquetado de pasos de operación fijos</strong>. Le das un nombre, y cada vez que llames ese nombre, ejecutará automáticamente todo el proceso completo.</p>



<p class="wp-block-paragraph">Un ejemplo de la vida cotidiana:</p>



<p class="wp-block-paragraph">Supongamos que «hornear pan» es una función.</p>



<p class="wp-block-paragraph">No tienes que repetir todo el proceso cada vez que quieras pan: amasar la masa → dar forma → hornear.</p>



<p class="wp-block-paragraph">Solo tienes que escribir «hornear pan» y todo el procedimiento se ejecuta automáticamente; esto se llama <strong>llamar a una función</strong>.</p>



<p class="wp-block-paragraph">Si quieres hornear pan dos veces, basta con llamar la función «hornear pan» dos veces.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Traduciendo este concepto al lenguaje C:</p>



<p class="wp-block-paragraph">La función <code>printf</code> tiene todo el código necesario para mostrar texto en pantalla. Solo tienes que escribir <code>printf("Hola")</code> sin tener que controlar la pantalla paso a paso manualmente.</p>
</blockquote>



<p class="wp-block-paragraph">Las funciones pueden devolver todo tipo de datos: números enteros, estructuras, punteros y más.</p>



<p class="wp-block-paragraph">Admite llamadas recursivas (una función se llama a sí misma). Las variables locales dentro de una función se vuelven a crear en cada invocación; <strong>no se pueden definir funciones anidadas dentro de otras</strong>, pero sí se pueden declarar variables dentro de bloques de código separados.</p>



<p class="wp-block-paragraph">El código fuente de un proyecto se puede dividir en varios archivos <code>.c</code> y compilarlos por separado.</p>



<p class="wp-block-paragraph">Las variables tienen tres ámbitos de visibilidad: solo dentro de una función, global pero limitado a un único archivo fuente, o visible para todo el programa.</p>



<h4 class="wp-block-heading">4) El preprocesador</h4>



<p class="wp-block-paragraph">Antes de la compilación se ejecuta el preprocesamiento: sustitución masiva de texto mediante macros, importación de otros archivos de código, compilación condicional de fragmentos seleccionados.</p>



<p class="wp-block-paragraph">El preprocesador se encarga de procesar órdenes que no forman parte de la sintaxis básica del lenguaje antes de compilar realmente. Estas herramientas extras existen para agilizar el desarrollo y mejorar la eficiencia, principalmente mediante macros. Lo veremos en detalle en capítulos posteriores.</p>



<h3 class="wp-block-heading">III. Un lenguaje minimalista de bajo nivel</h3>



<p class="wp-block-paragraph">Aquí «bajo nivel» no es un término peyorativo: C solo manipula los elementos nativos del ordenador: caracteres, valores numéricos y direcciones de memoria, aprovechando la lógica aritmética integrada en el hardware para ofrecer un rendimiento de ejecución muy alto.</p>



<p class="wp-block-paragraph">Es decir, puede interactuar con los componentes internos más profundos del ordenador. En comparación con otros lenguajes, C permite acceder directamente a direcciones de memoria e incluso controlar hardware.</p>



<h5 class="wp-block-heading">Pocas funcionalidades nativas; las capacidades complejas se implementan mediante bibliotecas</h5>



<p class="wp-block-paragraph">C no cuenta <strong>con soporte nativo integrado</strong> para cadenas de caracteres, arrays, colecciones, archivos, entrada y salida:</p>



<p class="wp-block-paragraph">No se puede manipular una cadena o array completo en una sola operación; solo las estructuras permiten copiar todo su contenido.</p>



<p class="wp-block-paragraph">No existe gestión automática de memoria ni recolector de basura: el desarrollador debe reservar y liberar memoria manualmente.</p>



<p class="wp-block-paragraph">No hay palabras clave nativas como <code>read/write</code>; para imprimir texto o leer entradas del teclado hay que llamar obligatoriamente funciones de biblioteca.</p>



<p class="wp-block-paragraph">Solo ofrece flujos de ejecución de un solo hilo, sin soporte nativo para multitarea, operaciones paralelas, sincronización o corrutinas.</p>



<p class="wp-block-paragraph">Una biblioteca es simplemente una colección de funciones preescritas en C u otros lenguajes. Los desarrolladores pueden llamar estas funciones listas para implementar funcionalidades sin tener que programar todo desde cero.</p>



<p class="wp-block-paragraph">Aunque muchas funciones requieren llamar a bibliotecas, el lenguaje en sí es compacto y con reglas sencillas, por lo que es fácil de aprender y dominar completamente.</p>



<h3 class="wp-block-heading">IV. Estandarización de C: ANSI C (1988)</h3>



<p class="wp-block-paragraph">La estandarización surgió porque al principio C se usaba de forma extendida y cada empresa creaba sus propias variantes, sin reglas unificadas. Se creó un organismo especializado para definir una normativa común, igual que las normas que regulan los puertos USB o los enchufes eléctricos.</p>



<p class="wp-block-paragraph">ANSI = American National Standards Institute</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>Explicación</summary>
<p class="wp-block-paragraph">El Instituto Nacional Estadounidense de Estándares es una organización privada de normalización de EE.UU. No produce software ni escribe código fuente, sino que crea especificaciones uniformes para todas las industrias: fabricación, electrónica, informática y lenguajes de programación.</p>
</details>



<h4 class="wp-block-heading">¿Qué es ANSI C?</h4>



<p class="wp-block-paragraph">En 1983, ANSI formó un comité para unificar la sintaxis del lenguaje C, y a finales de 1988 publicó la primera especificación oficial del lenguaje, conocida como <strong>ANSI C</strong> (también llamada C89).</p>



<h3 class="wp-block-heading">V. Complemento de la norma ANSI: La biblioteca estándar</h3>



<p class="wp-block-paragraph">La norma introdujo una biblioteca estándar unificada que proporciona utilidades multiplataforma para acceso a archivos, entrada y salida formateada, reserva de memoria, manipulación de cadenas y más, accesible mediante archivos de cabecera estandarizados.</p>



<p class="wp-block-paragraph">La sintaxis nativa de C es intencionalmente minimalista, solo cubre elementos básicos como variables, condicionales, bucles, funciones y punteros. No tiene <strong>ninguna funcionalidad integrada de forma nativa</strong> para imprimir texto, leer el teclado, gestionar archivos, realizar cálculos matemáticos o manipular cadenas.</p>



<p class="wp-block-paragraph">La especificación ANSI C define un conjunto universal de funciones de utilidad compatible con todos los compiladores en todos los sistemas operativos: este conjunto de herramientas se llama la <strong>biblioteca estándar</strong>.</p>



<p class="wp-block-paragraph">Para acceder a las funciones de biblioteca, los desarrolladores importan archivos de cabecera con la sintaxis <code>#include nombrearchivo.h</code>.</p>



<p class="wp-block-paragraph">Ejemplos:</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">#include <span class="hljs-tag">&lt;<span class="hljs-name">stdio.h</span>&gt;</span> // Biblioteca E/S: printf (imprimir texto), scanf (leer entrada de usuario)
#include <span class="hljs-tag">&lt;<span class="hljs-name">stdlib.h</span>&gt;</span> // Reserva de memoria, salida del programa, generación de números aleatorios
#include <span class="hljs-tag">&lt;<span class="hljs-name">string.h</span>&gt;</span> // Copia y comparación de cadenas de caracteres
#include <span class="hljs-tag">&lt;<span class="hljs-name">math.h</span>&gt;</span> // Funciones matemáticas como sin(), sqrt()</code></span></pre>


<p class="wp-block-paragraph">Antes de la norma ANSI, las funciones de impresión funcionaban distinto en UNIX y Windows, causando errores al portar código entre sistemas. Después de la biblioteca estándar, un código como <code>printf("hola")</code> se ejecuta igual en Windows, Linux y macOS sin modificaciones, reduciendo mucho el trabajo de los desarrolladores y acelerando la expansión mundial de C.</p>



<h4 class="wp-block-heading">¿Con qué lenguajes se desarrolló la biblioteca estándar?</h4>



<p class="wp-block-paragraph">La mayoría de sus funcionalidades están implementadas en C, con una pequeña parte que usa ensamblador y otros lenguajes de bajo nivel.</p>



<p class="wp-block-paragraph">Las funciones que no interactúan directamente con hardware o el sistema operativo, como la copia de cadenas <code>strcpy</code>, operaciones matemáticas o copia de bloques de memoria, están escritas casi totalmente en C puro.</p>



<p class="wp-block-paragraph">Las operaciones que interactúan directamente con el hardware o el núcleo del sistema operativo no se pueden hacer solo con C; requieren lenguajes complementarios de bajo nivel, principalmente ensamblador.</p>



<h3 class="wp-block-heading">VI. Portabilidad y seguridad de tipos</h3>



<p class="wp-block-paragraph">El mismo código fuente se puede compilar y ejecutar en distintos sistemas operativos con pocos cambios o sin modificaciones.</p>



<p class="wp-block-paragraph">Después de leer esta introducción, deberías tener una comprensión básica de C. Si algunos conceptos siguen sin quedar claros, no te preocupes: las explicaciones solo con texto suelen ser difíciles de asimilar. En los capítulos siguientes analizaremos cada tema con ejemplos prácticos de código para consolidar estas ideas.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/es/2026/06/19/que-es-el-lenguaje-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
