Podcast
Questions and Answers
¿Cuál de las siguientes afirmaciones describe mejor el propósito de los tipos de datos en C?
¿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?
¿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'?
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?
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?
¿Cuál es el propósito de usar el código ASCII en C?
¿Cuál es el propósito de usar el código ASCII en C?
¿Cuál es la principal diferencia entre los tipos de datos float
y double
en C?
¿Cuál es la principal diferencia entre los tipos de datos float
y double
en C?
¿Cuál de las siguientes afirmaciones es correcta sobre la precisión de los tipos flotantes en C?
¿Cuál de las siguientes afirmaciones es correcta sobre la precisión de los tipos flotantes en C?
¿Qué componentes principales constituyen una expresión en C?
¿Qué componentes principales constituyen una expresión en C?
¿Cuál de las siguientes opciones NO es un tipo de operando válido en C?
¿Cuál de las siguientes opciones NO es un tipo de operando válido en C?
¿Qué característica define a una constante en C?
¿Qué característica define a una constante en C?
Entre las constantes enteras en C, ¿cómo se indica que una constante es de tipo unsigned long
?
Entre las constantes enteras en C, ¿cómo se indica que una constante es de tipo unsigned long
?
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?
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?
¿Cómo se representa una constante de carácter en C?
¿Cómo se representa una constante de carácter en C?
En C, ¿qué es una secuencia de escape?
En C, ¿qué es una secuencia de escape?
¿Qué representa la secuencia de escape \n
en C?
¿Qué representa la secuencia de escape \n
en C?
¿Qué es una expresión constante en C?
¿Qué es una expresión constante en C?
¿Cómo se define una constante de tipo cadena en C?
¿Cómo se define una constante de tipo cadena en C?
¿Cuál es la función principal de una variable en C?
¿Cuál es la función principal de una variable en C?
Al declarar una variable en C, ¿qué dos acciones principales se realizan?
Al declarar una variable en C, ¿qué dos acciones principales se realizan?
¿Qué efecto tiene el calificador const
al declarar una variable en C?
¿Qué efecto tiene el calificador const
al declarar una variable en C?
¿Cuál es el propósito de llamar a una función dentro de una expresión en C?
¿Cuál es el propósito de llamar a una función dentro de una expresión en C?
¿Qué ocurre si una operación aritmética produce un resultado que excede el rango del tipo de dato utilizado para almacenarlo?
¿Qué ocurre si una operación aritmética produce un resultado que excede el rango del tipo de dato utilizado para almacenarlo?
¿Cuál de los siguientes operadores solo se puede aplicar a variables enteras en C?
¿Cuál de los siguientes operadores solo se puede aplicar a variables enteras en C?
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?
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?
Considerando la precedencia de operadores en C, ¿qué parte de la siguiente expresión se evalúa primero: a + b * c
?
Considerando la precedencia de operadores en C, ¿qué parte de la siguiente expresión se evalúa primero: a + b * c
?
¿Qué es la 'promoción entera' en C?
¿Qué es la 'promoción entera' en C?
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?
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?
Si tienes el siguiente código en C:
double resultado = (double) 5 / 2;
¿Cuál será el valor de la variable resultado
?
Si tienes el siguiente código en C:
double resultado = (double) 5 / 2;
¿Cuál será el valor de la variable resultado
?
¿Qué indica el operador de asignación compuesta +=
en C?
¿Qué indica el operador de asignación compuesta +=
en C?
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?
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?
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?
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?
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
?
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
?
Si tienes el siguiente código:
int a = 'a' - 'A';
¿Cuál es el valor final de a
?
Si tienes el siguiente código:
int a = 'a' - 'A';
¿Cuál es el valor final de a
?
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
?
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
?
Flashcards
¿Qué hacen los programas?
¿Qué hacen los programas?
Los datos de entrada son procesados para producir datos de salida.
¿Qué define un tipo de datos?
¿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?
¿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?
¿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?
¿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?
¿Qué representa 'unsigned' en tipos enteros?
Representa enteros siempre positivos o cero.
Signup and view all the flashcards
¿Qué representa 'signed' en tipos enteros?
¿Qué representa 'signed' en tipos enteros?
Pueden ser positivos, cero o negativos.
Signup and view all the flashcards
¿Tamaño del tipo 'char'?
¿Tamaño del tipo 'char'?
Es siempre un byte (8 bits).
Signup and view all the flashcards
¿Tamaño mínimo del tipo 'short'?
¿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'?
¿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'?
¿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'?
¿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'?
¿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'?
¿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?
¿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?
¿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?
¿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?
¿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?
¿Qué implica procesar datos?
Combinar datos para obtener otros datos.
Signup and view all the flashcards
¿Qué es una expresión?
¿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?
¿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?
¿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?
¿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?
¿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?
¿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?
¿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?
¿Qué es una constante tipo cadena?
Una secuencia de caracteres delimitada por comillas.
Signup and view all the flashcards
¿Qué es una variable?
¿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?
¿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'?
¿Qué hace el calificador 'const'?
Impide que el valor de una variable cambie.
Signup and view all the flashcards
¿Qué es una función?
¿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?
¿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?
¿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?
¿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?
¿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?
¿Qué ocurre con las expresiones entre paréntesis?
Se evalúan primero.
Signup and view all the flashcards
¿Qué ocurre si hay diferente precedencia?
¿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?
¿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?
¿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?
¿Qué ocurre en las conversiones aritméticas?
Se realiza la promoción entera.
Signup and view all the flashcardsStudy 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
), ylong long int
(long long
). - Los calificadores
signed
yunsigned
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
, yunsigned 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 tiposhort
. - El tipo
long
es de al menos 4 bytes (32 bits). - El tipo
long
es mayor o igual al tipoint
. - El tipo
long long
es de al menos 8 bytes (64 bits). - El tipo
long long
es mayor o igual al tipolong
.
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
ochar
. - 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
ylong double
tienen al menos el mismo tamaño, rango y precisión quefloat
.
Tipos Flotantes y Estándar IEEE 754
- En la mayoría de los compiladores de C,
float
ydouble
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
paraunsigned
,L
paralong
,UL
paraunsigned long
.LL
paralong long
,ULL
paraunsigned 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 sufijosF
of
parafloat
, oL
,o
ol
paralong 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 datotipo
.- 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 unshort
con o sin signo se convierten aint
. Si el tipoint
puede representar todos los valores deunsigned short
, este se convierte aint
. Si no se convierte aunsigned
. Este proceso se conoce como promoción entera.
Conversiones Aritméticas
- Si algún operando es de tipo
long double
, el otro se convierte along
y el resultado eslong double
. - Si algún operando es de tipo
double
, el otro se convierte adouble
y el resultado esdouble
. - Si no se aplica la regla anterior y si algún operando es de tipo
float
, el otro se convierte afloat
y el resultado esfloat
. - 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 aunsigned long long
y el resultado esunsigned 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 tipounsigned long
, entonces si unlong long
puede representar todos los valores de ununsigned long
el operandounsigned long
es convertido along long
y el resultado eslong long
. Si no, ambos operandos son convertidos aunsigned long long
y el resultado esunsigned long long
. - Si no se aplica la regla anterior y si algún operando es de tipo
unsigned long
, el otro se convierte aunsigned long
y el resultado esunsigned long
. - Si no se aplica la regla anterior, y si algún operando es de tipo
long
y el otro es de tipounsigned
, entonces si unlong
puede representar todos los valores de ununsigned
el operandounsigned
es convertido along
y el resultado eslong
. Si no ambos operandos son convertidos aunsigned long
y el resultado esunsigned long
. - Si no se aplica la regla anterior, y si algún operando es de tipo
long
, el otro se convierte along
y el resultado eslong
. - Si no se aplica la regla anterior, y si algún operando es de tipo
unsigned
, el otro se convierte aunsigned
y el resultado esunsigned
. - Si no se pueden aplicar ninguna de las reglas anteriores, los operandos deben de ser del tipo
int
y el resultado será de tipoint
. - 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 anomVar = nomVar + expresión
.nomVar -= expresión
es equivalente anomVar = nomVar - expresión
.nomVar *= expresión
es equivalente anomVar = nomVar * expresión
.nomVar /= expresión
es equivalente anomVar = nomVar / expresión
.nomVar %= expresión
es equivalente anomVar = 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.