Tipos de Datos y Expresiones en C

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes afirmaciones describe mejor el propósito de los tipos de datos en C?

  • Definir el conjunto de valores que un dato puede asumir y las operaciones que se pueden realizar con los datos. (correct)
  • Definir el conjunto de operaciones que se pueden realizar con los datos, pero no el rango de valores que pueden asumir.
  • Limitar la cantidad de memoria que un programa puede usar.
  • Especificar el orden en que las operaciones matemáticas deben ser realizadas.

¿Cuál de los siguientes enunciados es verdadero con respecto al calificador unsigned en C?

  • Indica que un entero puede ser positivo, negativo o cero.
  • Indica que un entero solo puede ser positivo o cero. (correct)
  • Aumenta el número de bytes asignados a un tipo de dato entero.
  • Solo se puede aplicar a tipos de datos flotantes.

En el contexto de los tipos enteros en C, ¿qué significa que un tipo sea 'signed'?

  • Que puede representar números positivos, negativos y cero. (correct)
  • Que se utiliza para representar caracteres alfanuméricos.
  • Que requiere menos espacio de almacenamiento en memoria.
  • Que solo puede representar números positivos.

De acuerdo con el estándar de C, ¿cuál de las siguientes afirmaciones sobre el tamaño de los tipos enteros es siempre verdadera?

<p>El tipo <code>char</code> es siempre de 1 byte. (B)</p> Signup and view all the answers

¿Cuál es el propósito de usar el código ASCII en C?

<p>Codificar cada caracter como un número entero para su almacenamiento. (D)</p> Signup and view all the answers

¿Cuál es la principal diferencia entre los tipos de datos float y double en C?

<p><code>double</code> puede almacenar un rango más amplio de valores y ofrece mayor precisión que <code>float</code>. (A)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es correcta sobre la precisión de los tipos flotantes en C?

<p>La precisión se refiere a la minima diferencia que pueden tener dos números. (D)</p> Signup and view all the answers

¿Qué componentes principales constituyen una expresión en C?

<p>Operandos y operadores. (A)</p> Signup and view all the answers

¿Cuál de las siguientes opciones NO es un tipo de operando válido en C?

<p>Comentarios (A)</p> Signup and view all the answers

¿Qué característica define a una constante en C?

<p>Su valor no puede ser modificado durante la ejecución del programa. (D)</p> Signup and view all the answers

Entre las constantes enteras en C, ¿cómo se indica que una constante es de tipo unsigned long?

<p>Añadiendo el sufijo <code>U</code>. (C)</p> Signup and view all the answers

Si no se especifica un sufijo para un número de punto flotante, ¿cuál es el tipo por defecto que se le asigna en C?

<p><code>double</code> (D)</p> Signup and view all the answers

¿Cómo se representa una constante de carácter en C?

<p>Entre apóstrofos. (A)</p> Signup and view all the answers

En C, ¿qué es una secuencia de escape?

<p>Una combinación de caracteres que representa un caracter especial. (B)</p> Signup and view all the answers

¿Qué representa la secuencia de escape \n en C?

<p>Nueva línea. (D)</p> Signup and view all the answers

¿Qué es una expresión constante en C?

<p>Una expresión que se evalúa en tiempo de compilación. (A)</p> Signup and view all the answers

¿Cómo se define una constante de tipo cadena en C?

<p>Entre comillas dobles. (C)</p> Signup and view all the answers

¿Cuál es la función principal de una variable en C?

<p>Almacenar un valor que puede cambiar durante la ejecución del programa. (B)</p> Signup and view all the answers

Al declarar una variable en C, ¿qué dos acciones principales se realizan?

<p>Se define su tipo de dato y se reserva espacio en memoria. (B)</p> Signup and view all the answers

¿Qué efecto tiene el calificador const al declarar una variable en C?

<p>Convierte la variable en una constante, cuyo valor no puede ser modificado después de su inicialización. (B)</p> Signup and view all the answers

¿Cuál es el propósito de llamar a una función dentro de una expresión en C?

<p>Ejecutar un bloque de código específico y sustituir la llamada por el valor que retorna la función. (C)</p> Signup and view all the answers

¿Qué ocurre si una operación aritmética produce un resultado que excede el rango del tipo de dato utilizado para almacenarlo?

<p>Se produce un sobreflujo, y el resultado puede ser incorrecto. (C)</p> Signup and view all the answers

¿Cuál de los siguientes operadores solo se puede aplicar a variables enteras en C?

<p>Operador de incremento (++). (A)</p> Signup and view all the answers

En C, si tienes la siguiente expresión: x = n++;, donde n es inicialmente 5, ¿cuál será el valor de x después de ejecutar esta línea?

<p>5 (D)</p> Signup and view all the answers

Considerando la precedencia de operadores en C, ¿qué parte de la siguiente expresión se evalúa primero: a + b * c?

<p><code>b * c</code> (A)</p> Signup and view all the answers

¿Qué es la 'promoción entera' en C?

<p>La conversión automática de tipos <code>char</code> o <code>short</code> a <code>int</code> en expresiones. (A)</p> Signup and view all the answers

Si en una expresión se mezclan operandos de tipo int y double, ¿a qué tipo se convertirán los operandos antes de realizar la operación, según las reglas de conversión implícita de C?

<p>Ambos operandos se convierten a <code>double</code>. (C)</p> Signup and view all the answers

Si tienes el siguiente código en C:

double resultado = (double) 5 / 2;

¿Cuál será el valor de la variable resultado?

<p>2.5 (A)</p> Signup and view all the answers

¿Qué indica el operador de asignación compuesta += en C?

<p>Realiza una suma y asignación en una sola operación. (A)</p> Signup and view all the answers

Si tienes el siguiente código en C:

int x = 5;
double y = 2.5;
x = y;

¿Qué valor se almacenará en la variable x después de la asignación?

<p>2 (B)</p> Signup and view all the answers

En conversiones de flotantes, ¿qué ocurre cuando intentas convertir un valor flotante más preciso a uno menos preciso y el valor está dentro del rango representable?

<p>El valor se redondea. (D)</p> Signup and view all the answers

Si tienes el siguiente código:

int a = 83;
int b = 305;
double x = 4.32;
int c = b / (b - a);

¿Cuál es el valor final de c?

<p>1 (B)</p> Signup and view all the answers

Si tienes el siguiente código:

int a = 'a' - 'A';

¿Cuál es el valor final de a?

<p>32 (A)</p> Signup and view all the answers

Si tienes el siguiente código:

double x = 4.32;
double y = 0.85;
double c = 3 * sqrt(fabs(y - x));

¿Cuál es el valor final de c?

<p>5.5883808 (D)</p> Signup and view all the answers

Flashcards

¿Qué hacen los programas?

Los datos de entrada son procesados para producir datos de salida.

¿Qué define un tipo de datos?

Es el conjunto de valores que un dato puede asumir, y las operaciones que se pueden realizar con datos de ese tipo.

¿Cuáles son los tipos básicos de datos en C?

Enteros y de punto flotante.

¿Cuáles son los tipos derivados de datos en C?

Arreglos, apuntadores, estructuras y uniones.

Signup and view all the flashcards

¿Cuáles son los tipos enteros en C?

char, short int, int, long int, y long long int.

Signup and view all the flashcards

¿Qué representa 'unsigned' en tipos enteros?

Representa enteros siempre positivos o cero.

Signup and view all the flashcards

¿Qué representa 'signed' en tipos enteros?

Pueden ser positivos, cero o negativos.

Signup and view all the flashcards

¿Tamaño del tipo 'char'?

Es siempre un byte (8 bits).

Signup and view all the flashcards

¿Tamaño mínimo del tipo 'short'?

Es de al menos 2 bytes (16 bits).

Signup and view all the flashcards

¿Relación de tamaño entre 'int' y 'short'?

Es mayor o igual al tipo 'short'.

Signup and view all the flashcards

¿Tamaño mínimo del tipo 'long'?

Es de al menos 4 bytes (32 bits).

Signup and view all the flashcards

¿Relación de tamaño entre 'long' e 'int'?

Es mayor o igual al tipo 'int'.

Signup and view all the flashcards

¿Tamaño mínimo del tipo 'long long'?

Es de al menos 8 bytes (64 bits).

Signup and view all the flashcards

¿Relación de tamaño entre 'long long' y 'long'?

Es mayor o igual al tipo 'long'.

Signup and view all the flashcards

¿Cómo se almacena el texto en la computadora?

Se codifica mediante un número entero.

Signup and view all the flashcards

¿Cuál es una forma común de codificación de caracteres?

ASCII.

Signup and view all the flashcards

¿Cuales son los tipos de datos flotantes básicos?

Son float, double y long double.

Signup and view all the flashcards

¿Qué indica la precisión en los tipos flotantes?

Es la mínima diferencia que pueden tener dos números para ser considerados diferentes.

Signup and view all the flashcards

¿Qué implica procesar datos?

Combinar datos para obtener otros datos.

Signup and view all the flashcards

¿Qué es una expresión?

Es una combinación de operandos y operadores.

Signup and view all the flashcards

¿Cuáles son los tipos de operandos en C?

Son constantes, variables y llamadas a funciones.

Signup and view all the flashcards

¿Qué es una constante?

Es un valor que no se modifica durante la ejecución del programa.

Signup and view all the flashcards

¿Cuáles son los tipos de constantes en C?

Enteras, flotantes, caracteres y cadena.

Signup and view all the flashcards

¿Qué es una constante entera?

Un número entero en un rango definido.

Signup and view all the flashcards

¿Cómo se define una constante flotante de tipo float?

Con el sufijo 'F' o 'f'.

Signup and view all the flashcards

¿Cómo se define una constante flotante de tipo long double?

Con el sufijo 'L' o 'l'.

Signup and view all the flashcards

¿Qué es una constante tipo cadena?

Una secuencia de caracteres delimitada por comillas.

Signup and view all the flashcards

¿Qué es una variable?

Es un dato que puede variar su valor.

Signup and view all the flashcards

¿Qué se hace al declarar una variable?

Informar al compilador y reservar espacio en memoria.

Signup and view all the flashcards

¿Qué hace el calificador 'const'?

Impide que el valor de una variable cambie.

Signup and view all the flashcards

¿Qué es una función?

Subprograma que realiza una tarea y regresa un valor.

Signup and view all the flashcards

¿Cuáles son los operadores aritméticos básicos?

Suma, resta, multiplicación, división y módulo.

Signup and view all the flashcards

¿Qué pasa al ocurrir un sobreflujo entero?

Causa resultados erróneos.

Signup and view all the flashcards

¿Qué hacen los operadores de incremento y decremento?

Sumar o restar 1 al operando.

Signup and view all the flashcards

¿Qué es la precedencia de operadores?

El orden en que se efectúan las operaciones.

Signup and view all the flashcards

¿Qué ocurre con las expresiones entre paréntesis?

Se evalúan primero.

Signup and view all the flashcards

¿Qué ocurre si hay diferente precedencia?

Se realiza primero la operación del operador de mayor precedencia.

Signup and view all the flashcards

¿Qué ocurre si los operadores tiene igual precedencia?

Se realizan en el orden dado por la asociatividad.

Signup and view all the flashcards

¿Qué ocurre cuando un operador tiene operandos de diferente tipo?

Se convierten a un tipo común de forma implícita.

Signup and view all the flashcards

¿Qué ocurre en las conversiones aritméticas?

Se realiza la promoción entera.

Signup and view all the flashcards

Study Notes

Tipos de Datos y Expresiones en C

  • Los programas procesan datos de entrada para generar datos de salida.
  • Los lenguajes de programación definen tipos de datos que el usuario puede emplear.
  • Un tipo de datos define el conjunto de valores que un dato puede asumir y las operaciones que se pueden hacer con los datos de ese tipo.

Tipos de Datos en C

  • Tipos Básicos: Enteros y Flotantes.
  • Tipos Derivados: Arreglos, Apuntadores, Estructuras y Uniones.
  • Los apuntadores, estructuras y uniones no se verán en este curso.

Tipos Enteros en C

  • Los tipos enteros permiten representar un subconjunto de números enteros.
  • Cada tipo entero cubre un rango y requiere un cierto número de bytes para almacenarse.
  • Los tipos enteros son: char, short int (short), int, long int (long), y long long int (long long).
  • Los calificadores signed y unsigned se pueden aplicar a los tipos enteros.
  • Los enteros unsigned son siempre positivos o cero.
  • Los enteros signed pueden ser positivos, cero, o negativos.
  • char, signed char, y unsigned char deben tratarse como tres tipos distintos.
  • Si se omite el calificador de signo, el entero es signed.
  • El estándar de C sólo establece el tamaño del tipo char.
  • El tipo char es siempre de un byte (8 bits).
  • El tipo short es de al menos 2 bytes (16 bits).
  • El tipo int es mayor o igual al tipo short.
  • El tipo long es de al menos 4 bytes (32 bits).
  • El tipo long es mayor o igual al tipo int.
  • El tipo long long es de al menos 8 bytes (64 bits).
  • El tipo long long es mayor o igual al tipo long.

Rango de los Tipos Enteros en C

  • Tipos enteros y sus rangos comunes (con y sin signo).
  • 8 bits sin signo: 0 a 255.
  • 8 bits con signo: -128 a 127.
  • 16 bits sin signo: 0 a 65,535.
  • 16 bits con signo: -32,768 a 32,767.
  • 32 bits sin signo: 0 a 4,294,967,295.
  • 32 bits con signo: -2,147,483,648 a 2,147,483,647.
  • 64 bits sin signo: 0 a 18,446,744,073,709,551,615.
  • 64 bits con signo: -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807.

Tipos Enteros en GCC

  • Para el compilador GCC, los tipos enteros tienen los siguientes tamaños:
  •  char: un byte (8 bits)
  •  short: 2 bytes (16 bits)
  •  int: 4 bytes (32 bits)
  •  long: 4 bytes (32 bits)
  •  long long: 8 bytes (64 bits)

Caracteres en C

  • Para almacenar texto, cada carácter se codifica mediante un número entero.
  • Estos códigos se almacenan en variables de tipo int o char.
  • El Código ASCII es una forma de codificación común.
  • ASCII significa un organismo que establece normas para el intercambio de información.
  • En este código, cada carácter se representa con 7 bits, permitiendo 2^7 = 128 caracteres diferentes.

Tipos Flotantes

  • Los tipos flotantes de C permiten representar números reales.
  • Cada tipo flotante cubre un rango de números reales y requiere cierto número de bytes
  • Los tipos flotantes básicos de C son:
    • float: punto flotante de precisión normal.
    • double: punto flotante de doble precisión.
    • long double: punto flotante de doble precisión.
  • El tamaño de los flotantes depende de la implementación del compilador.
  • Restricciones: double y long double tienen al menos el mismo tamaño, rango y precisión que float.

Tipos Flotantes y Estándar IEEE 754

  • En la mayoría de los compiladores de C, float y double siguen el estándar IEEE 754.
  • Los tipos flotantes son:
    • float de 4 bytes, rango de 3.4E-38 a 3.4E+38, con precisión de 7 cifras.
    • double de 8 bytes, rango de 1.7E-308 a 1.7E+308, con precisión de 15 cifras.
    • long double de 16 bytes, rango de 2.805842e-313 a 2.805842e-313, con precisión de 18 cifras.
  • La precisión indica la mínima diferencia entre dos números para ser considerados diferentes.
  • No todos los números reales pueden representarse en los tipos flotantes.

Expresiones

  • El procesamiento de datos implica combinarlos de alguna forma, resultando en otros datos.
  • Las expresiones especifican cómo deben combinarse esos datos.
  • Una expresión es una combinación de operandos y operadores.
  • Los operandos representan valores y los operadores indican las operaciones a realizar.

Operandos

  • Hay tres tipos de operandos en C:
    • Constantes.
    • Variables.
    • Llamadas a funciones.

Constantes

  • Una constante es un valor que no se modifica durante la ejecución del programa.
  • Las constantes en un programa en C pueden ser:
    • Enteras.
    • Flotantes.
    • Caracteres.
    • Cadenas.

Constantes Enteras

  • Es un número entero en el rango 0 al valor máximo permitido en el tipo unsigned long long.
  • Las constantes negativas son constantes sin signo con el operador unario menos.
  • Si el número es mayor al que puede representarse, ocurre un sobreflujo sin aviso.
  • Los números en el rango char, signed char, unsigned char, short, unsigned short, o int, el compilador lo almacena como un int.

Sufijos de Rango para Constantes Enteras

  • Números por encima del rango int se almacenan con sufijos.
  • U para unsigned, L para long, UL para unsigned long.
  • LL para long long, ULL para unsigned long long.
  • Los sufijos se pueden escribir en minúsculas. Si deseamos que ese número se almacene como de un tipo de un entero de mayor rango deberá agregársele el sufijo del tipo deseado.

Constantes de Punto Flotante

  • Contienen un punto decimal, un exponente, o ambos.
  • Son de tipo double por defecto, a menos que lleven los sufijos F o f para float, o L, o o l para long double.

Constantes de Carácter

  • Una constante de carácter se almacena en un entero.
  • El entero representa el código del carácter empleado por el compilador, generalmente ASCII.
  • Puede escribirse como un carácter delimitado por apóstrofes ('a', 'Z').
  • O una secuencia de escape delimitada por apóstrofes.

Secuencias de Escape

  • \a (BEL): Suena la bocina (código ASCII 7).
  • \b (BS): Regresa un espacio (código ASCII 8).
  • \f (FF): Salto de página (código ASCII 12).
  • \n (LF): Salto de línea (código ASCII 10).
  • \r (CR): Regreso de carro (código ASCII 13).
  • \t (HT): Tab horizontal (código ASCII 9).
  • \v (VT): Tab vertical (código ASCII 11).
  • \\: Diagonal invertida (código ASCII 92).
  • \': Apóstrofe (código ASCII 39).
  • \": Comillas (código ASCII 34).
  • \?: Signo de interrogación (código ASCII 63).
  • \xHHH: Valor hexadecimal de uno a tres dígitos.

Expresión Constante

  • Una expresión constante es aquella cuyos operandos son sólo constantes.
  • Se evalúan en tiempo de compilación y su valor se sustituye en lugar de la expresión.

Constantes de Tipo Cadena

  • Secuencia de caracteres delimitada por comillas.
  • Puede contener secuencias de escape.

Variables

  • Es un dato que puede variar su valor durante la ejecución del programa.
  • Se puede tener variables de cualquier tipo de datos.
  • Todas las variables deben declararse antes de usarse.
  • Al declarar una variable:
    • Se informa al compilador de la existencia de una variable cuyo nombre y tipo se especifican en la declaración.
    • Se pide al compilador que reserve espacio en la memoria.

Declaración de Variables

  • Sintaxis: tipo nomVar1[ = exp1][, nomVar2[ = exp2]...]
  • nomVar1, nomVar2 son los nombres de las variables, que son del tipo de dato tipo.
  • Las variables pueden inicializarse al momento de su declaración con expresiones exp1, exp2.

Calificador const

  • El calificador const se aplica a la declaración de una variable para impedir que su valor cambie.
  • Una variable const debe ser inicializada al momento de su declaración.
  • Intentar modificar su valor genera un error.

Llamadas a Funciones

  • Una función es un subprograma que realiza una tarea y regresa un valor.
  • La llamada a la función es la orden de que se ejecute ese subprograma.
  • Al evaluar una expresión, el programa substituye la llamada a la función por el valor que ésta regresa.

Llamadas a Funciones y Ejemplo

  • Al evaluar la expresión 3.0 + sqrt(4.0), sqrt(4.0) es la llamada a la función sqrt.
  • El programa substituye el valor regresado (2.0), resultando en 3.0 + 2.0.
  • sqrt es una función de la biblioteca estándar de C que retorna la raíz cuadrada de su argumento.

Funciones de la Biblioteca Estándar de C

  • double atan(double x): Calcula tan-1(x)
  • double cos(double x): Calcula cos(x)
  • double exp(double x): Calcula ex
  • double fabs(double x): Calcula |x|
  • double log(double x): Calcula ln(x)
  • double pow(double x, double y): Calcula xy
  • double sin(double x): Calcula sen(x)
  • double tan(double x): Calcula tan(x)
  • int toupper(int c): Convierte c a mayúscula

Operadores Aritméticos de C

  • En el lenguaje C hay dos aritméticas: enteros y punto flotante.
  • Cada aritmética tiene sus propias reglas y opera sólo sobre los datos de su mismo tipo.
  • La aritmética de enteros opera sólo con enteros y produce resultados enteros, igual con los flotantes.
  • No se permiten mezclas de enteros y flotantes.
  • Una operación existente en ambas aritméticas comparte el mismo símbolo para el operador (ej. + para la suma).
  • El compilador sabe que aritmética aplicar de acuerdo al tipo de los operandos.

Operadores Más (+) y Menos (-)

  • El operador unario menos (-) cambia el signo del operando.
  • Si el operando es entero, el resultado es entero; si es flotante, el resultado es flotante.
  • El operador unario más (+) existe por simetría, no hace nada.

Operadores de Multiplicación, División, y Módulo

  • Multiplicación (*): Producto de los operandos. Si son enteros, el resultado es entero; si son flotantes, el resultado es flotante.
  • División (/): Parte entera del cociente si los operandos son enteros. Si son flotantes, el resultado es flotante.
  • Módulo (%): Solo opera con enteros, da el residuo de la división.

Operadores de Suma y Resta

  • Suma (+): Da la suma de los operandos.
  • Resta (-): Da la diferencia de los operandos.
  • Si los operandos son enteros, el resultado es entero; si son flotantes, el resultado es flotante.

Sobreflujo

  • Es posible que una expresión tome un valor incorrecto al ejecutarse un programa.
  • Cuando un valor excede el rango de los enteros ocurre un sobreflujo entero.
  • Normalmente, el programa continúa su ejecución, pero los resultados son erróneos.
  • El programador debe asegurarse que los valores estén dentro de los rangos permitidos.

Operadores de Incremento y Decremento

  • Se aplican solo a variables enteras.
  • Incremento (++): Suma 1 al operando.
  • Decremento (--): Resta 1 al operando.
  • Pueden usarse como prefijos (++n o --n) o sufijos (n++ o n--).
  • En ambos casos se incrementa o decrementa el operando en 1.
  • Si el operador se usa como prefijo, el operando es incrementado o decrementado antes de ser usado, y si el operador se usa como sufijo, el operando es incrementado o decrementado después de ser usado.

Precedencia y Asociatividad de Operadores

  • El orden en que se efectúan las operaciones en una expresión está dado por las siguientes reglas:
    • Las expresiones encerradas entre paréntesis se evalúan primero.
    • Si hay operadores de diferente precedencia, la operación del operador de mayor precedencia se realiza primero.
    • Si hay operadores de igual precedencia, las operaciones se realizan en el orden dado por la asociatividad de los operadores.

Conversión de Tipos Implícita

  • Cuando un operador tiene operandos de diferente tipo, se convierten a un tipo común.
  • un char o un short con o sin signo se convierten a int. Si el tipo int puede representar todos los valores de unsigned short, este se convierte a int. Si no se convierte a unsigned. Este proceso se conoce como promoción entera.

Conversiones Aritméticas

  • Si algún operando es de tipo long double, el otro se convierte a long y el resultado es long double.
  • Si algún operando es de tipo double, el otro se convierte a double y el resultado es double.
  • Si no se aplica la regla anterior y si algún operando es de tipo float, el otro se convierte a float y el resultado es float.
  • Si no se aplica la regla anterior entonces se realiza la promoción entera en ambos operandos y si algún operando es de tipo unsigned long long, el otro se convierte a unsigned long long y el resultado es unsigned long long.

Conversiones Aritméticas (cont.)

  • Si no se aplica la regla anterior, y si algún operando es de tipo long long y el otro es de tipo unsigned long, entonces si un long long puede representar todos los valores de un unsigned long el operando unsigned long es convertido a long long y el resultado es long long. Si no, ambos operandos son convertidos a unsigned long long y el resultado es unsigned long long.
  • Si no se aplica la regla anterior y si algún operando es de tipo unsigned long, el otro se convierte a unsigned long y el resultado es unsigned long.
  • Si no se aplica la regla anterior, y si algún operando es de tipo long y el otro es de tipo unsigned, entonces si un long puede representar todos los valores de un unsigned el operando unsigned es convertido a long y el resultado es long. Si no ambos operandos son convertidos a unsigned long y el resultado es unsigned long.
  • Si no se aplica la regla anterior, y si algún operando es de tipo long, el otro se convierte a long y el resultado es long.
  • Si no se aplica la regla anterior, y si algún operando es de tipo unsigned, el otro se convierte a unsigned y el resultado es unsigned.
  • Si no se pueden aplicar ninguna de las reglas anteriores, los operandos deben de ser del tipo int y el resultado será de tipo int.
  • En resumen cuando un operador tiene operandos de diferente tipo, el operando del tipo con menor rango es promovido al tipo de mayor rango y el resultado es del tipo mayor rango.
  • Esta conversión no quiere decir que la variable ni su contenido cambian de tipo. Lo que cambia de tipo es una copia del valor de la variable la cual se almacena en una localidad de memoria temporal (que puede ser en la memoria principal o en un registro en el CPU) y la cual se utiliza para efectuar los cálculos.

Conversión de Tipos Explícita

  • Permite forzar la conversión de una expresión a un tipo dado usando el operador cast: (tipo)expresión.
  • La expresión se convierte al tipo dado según las reglas establecidas.
  • Ejemplos de conversiones explícitas para evitar sobreflujos o para obtener resultados fraccionarios.

Operadores de Asignación

  • Permiten reemplazar el valor de una variable.
  • Son: += -= *= /= %=
  • El operador de asignación = debe de tener como operando izquierdo una variable y como operando derecho una expresión.
  • nomVar = expresión constituye a su vez una expresióncuyo valor es expresión por lo que podemos escribir nomVar1 = nomVar2 = expresión
  • Tanto nomVar1 como nomVar2 toman el valor de expresión.

Operadores de Asignación Componentes

  • nomVar += expresión es equivalente a nomVar = nomVar + expresión.
  • nomVar -= expresión es equivalente a nomVar = nomVar - expresión.
  • nomVar *= expresión es equivalente a nomVar = nomVar * expresión.
  • nomVar /= expresión es equivalente a nomVar = nomVar / expresión.
  • nomVar %= expresión es equivalente a nomVar = nomVar % expresión.

Operadores de Asignación y Conversiones Implícitas

  • Si en una asignación el tipo del valor de expresión es diferente al tipo de nomVar, tienen lugar una conversión implícita. Conversiones enteras:
  • Cuando cualquier tipo entero se convierte a un tipo con signo, el valor no se cambia si puede ser representado en el nuevo tipo. En el otro caso el resultado no está definido. Enteros y flotantes:
  • Cuando un valor de tipo flotante se convierte a un tipo entero, la parte fraccionaria se descarta.
  • Si el valor resultante no puede ser representado en el tipo entero, el resultado no está definido.
  • En particular la conversión de flotantes negativos a enteros sin signo no está definida.Float:
  • Cuando una valor flotante menos preciso se convierte a un flotante igual o más preciso, el valor no se modifica.
  • Cuando una valor flotante más preciso se convierte a un flotante menos precciso y el valor está dentro del rango representable, el valor se redondea a la precisión menor

Operadores de Asignación y Conversiones Implícitas (Cont.)

Conversiones flotantes:

  • Cuando un valor flotante menos preciso se convierte a un flotante igual o más preciso, el valor no se modifica.
  • Cuando un flotante más preciso se convierte a un flotante menos preciso, y el valor esta dentro del rango representable, entonces el valor se redondea a la menor precisión.
  • Si el resultado esta fuera de rango el comportamiento no esta definido.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser