You are on page 1of 8

Instrucciones:

1. Identifica los tipos de datos manejados por C# y explica su definicin, rango de valores
y caractersticas.
2. Identifica los operadores aritmticos, lgicos y relacionales y explica su definicin,
funcionalidad y caractersticas.
3. Identifica las conversiones, explcitas e implcitas que puedes realizar
4. Ejemplifica la aplicacin de los tipos de datos en la declaracin de variables y la utilizacin
de los operadores aritmticos, relacionales y lgicos mediante segmentos de cdigo, as como
la relacin entre las conversiones explcitas e implcitas.
5. Organiza la informacin en una herramienta de tu preferencia: cuadro comparativo, cuadro
sinptico, esquema, diagrama, etctera.
Tipos de datos comunes en C#

Tamao de
Tipo Descripcin Memoria
Utilizada
Las variables con tipo sbyte pueden contener nmeros enteros de 8 bits con signo.
La s de sbyte significa 'con signo', lo que quiere decir que el valor de la variable
sbyte 1 byte
puede ser positivo o negativo. El menor valor posible para una variable sbyte es -
128 y el mayor es 127.
Las variables con tipo byte pueden contener nmeros enteros de 8 bits sin signo. A
diferencia de las variables sbyte, las variables byte no tienen signo y slo pueden
byte 1 byte
contener nmeros positivos. El valor ms pequeo posible para un variable byte es
O; el valor ms alto es 255.
Las variables con tipo short pueden contener nmeros enteros de 16 bits con
short signo. El menor valor posible para un variable short es 2 bytes
-32,768; el valor ms alto es 32,767.
Las variables con tipo ushort pueden contener nmeros enteros de 16 bits sin
ushort signo. La 'u' de ushort significa sin signo. El menor valor posible para una variable 2 bytes
ushort es O; el valor ms alto es 65,535.
Las variables con tipo in t pueden contener nmeros enteros de 32 bits con signo.
int El menor valor posible para una variable int es 4 bytes
-2,147,483,648; el valor ms alto es 2,147,483,647.
Las variables con tipo uint pueden contener nmeros enteros de 32 bits sin signo.
uint La 'u' en uint significa sin signo. El menor valor posible para una variable uint 4 bytes
variable es O; el valor ms alto posible es 4.294.967.295.
Las variables con tipo long pueden contener nmeros enteros de 64 bits con signo.
long El menor valor posible para una variable long es 8 bytes
-9.223.372.036.854.775.808 el valor ms alto es 9.223.372.036.854.775.807.
Las variables con tipo ulong pueden contener nmeros enteros de 64 bits sin
ulong signo. La 'u' en ulong significa sin signo. El menor valor posible para una variable 8 bytes
ulong es O; el valor ms alto es 18.446.744.073.709.551.615.
Las variables con tipo char pueden contener caracteres Unicode de 16 bits. El
char menor valor posible para una variable char es el carcter Unicode cuyo valor es O; 2 bytes
el valor ms alto posible es el carcter Unicode cuyo valor es 65.535.
Las variables con tipo float pueden contener un valor de coma flotante de 32 bits
con signo. El menor valor posible para una variable float es aproximadamente 1.5
float 4 bytes
por 10 elevado a 45; el valor ms alto es aproximadamente 3.4 por 10 elevado a
38.
Las variables con tipo double pueden contener un valor de coma flotante de 64 bits
con signo. El menor valor posible para una variable double es aproximadamente 5
double 8 bytes
por 10 elevado a 324; el valor ms alto es aproximadamente 1,7 por 10 elevado a
308.
Las variables con tipo decimal pueden contener un valor de coma flotante de 128
bits con signo. El menor valor posible para una variable decimal es
decimal aproximadamente 1 por 10 elevado a 28; el valor ms alto es aproximadamente 16 bytes
7.9 por 10 elevado a 28. Las variables de tipo decimal son buenas para clculos
financieros.
Las variables con tipo bool pueden tener uno de los dos posibles valores: true o
falseo El uso del tipo bool es una de las partes en las que C# se aparta de su legado
C y C++. En ellos, el valor entero O era sinnimo de false y cualquier valor que no
bool fuese cero era sinnimo de true. 1 byte
Sin embargo, en C# los tipos no son sinnimos. No puede convertir una variable
entera en su valor equivalente bool. Si quiere trabajar con una variable que necesita
tener una condicin verdadera o falsa, use una variable bool y no una variable int.
Almacena un instante de tiempo que va comprendido desde 01/01/0001 12:00:00
datetime 8 bytes
am a 31/12/9999 11:59:59 pm
2 bytes por
string Almacena una secuencia de caracteres
carcter
Los valores ms pequeos pueden colocarse en variables de mayores tipos. Si un variable short puede
contener valores desde -32.768 hasta 32.767, y una grande puede contener valores desde -
9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807, entonces es evidente que todos los
posibles valores short pueden ser almacenados en una variable long.

El consumo de memoria. Una variable long puede contener valores ms grandes, pero tambin
necesita ms memoria. Un variable short usa 16 bits (dos bytes), mientras que una grande usa 32 bits
(cuatro bytes de memoria). Si va a trabajar con valores que no van ms all del lmite de un variable
short, use la variable short. Es una buena costumbre usar toda la memoria que necesite, pero no usar
ms de la necesaria.

Operadores

Estos operadores estn puestos en orden de precedencia, es decir, en el caso de haber una expresin
con varios de ellos, se ejecutan por ese orden.

Los operadores primarios son operadores de expresin.

Operadores Uso Tipo Descripcin


En el caso de (expresin), los operadores son realmente
(expresin) Control de precedencia Primario los parntesis. Sirven para modificar la precedencia y darle
prioridad a la expresin que se encuentra dentro del
parntesis.
Los operadores de incremento (++) y decremento (--)
sirven para incrementar o disminuir el valor de una
Postincremento y variable en una unidad. Esto lo realiza despus de
var++, var-- Primario realizar cualquier operacin. Por ejemplo:
postdecremento
a = ++num;
b = a--;
Los operadores unitarios + y - sirven sencillamente para
Operando en forma
+ Unitario mantener o cambiar el signo de un operando. Si se desea
original mantener el signo de un operando sin cambios, el + se
puede omitir.
El operador - cambia el valor. En el siguiente ejemplo,
como i vala 10, el valor que se guardara en b sera -10.
- Cambio de signo Unitario
int i=10;
int b=-i;
El operador unitario! es un not lgico, es decir, invierte el
valor de un dato de tipo boolean. En el siguiente ejemplo, i
! Not lgico Unitario valdra true y b valdra false:

bool i=true;
bool b=!i;
Se utiliza para incrementar una variable, antes de realizar
cualquier operacin. Ejemplo:
Preincremento y
++var, --var Unitario int a = 10;
predecremento
int b=++a;
En este ejemplo, incrementara a que vale 10 y despus
guardara el valor 11 en b.
En el operador (conversion), lo que ha de ir entre
(conversin) var Conversin de tipos Unitario parntesis es el tipo al que se quiere convertir (int), (uint),
(long)...
Los operadores * y / son, respectivamente, para multiplicar
*, / Multiplicacin, divisin Binario y dividir. Es muy sencillo. Si, por ejemplo, tenemos la
siguiente expresin: 4*6/2, el resultado sera el que se
supone: 12.
% Resto de divisin Binario El operador % devuelve el resto de una divisin. Por
ejemplo, 8 % 3 devolvera 2.
+, - Suma, resta Binario Los operadores + y - (binarios) son para sumar o restar.
4+7-3 devolvera 8.
<<, >> Desplazamiento de bits Binario Los operadores << y >> efectan un desplazamiento de
bits hacia la izquierda o hacia la derecha.
Los operadores relacionales < (menor que), > (mayor que),
<= (menor o igual que), >= (mayor o igual que), is, == (igual
que), != (distinto de) establecen una comparacin entre dos
valores y devuelven como resultado un valor de tipo
boolean (true o false). Veamos un ejemplo:

int i;
int b;
Console.Write("Escribe el valor de i: ");
i=Int32.Parse(Console.ReadLine());

Console.Write("Escribe el valor de b: ");


b=Int32.Parse(Console.ReadLine());

Console.WriteLine("i<b devuelve: {0}", (i<b));


<, >, <=, >=, is, ==, Console.WriteLine("i<=b devuelve: {0}", (i<=b));
Relacionales Binario Console.WriteLine("i>b devuelve: {0}", (i>b));
!=
Console.WriteLine("i>=b devuelve: {0}", (i>=b));
Console.WriteLine("i==b devuelve: {0}", (i==b));
Console.WriteLine("i!=b devuelve: {0}", (i!=b));

La salida de estas lneas de programa sera la siguiente (en


rojo est lo que se ha escrito durante la ejecucin de las
mismas):

Escribe el valor de i: 2
Escribe el valor de b: 3
i<b devuelve: True
i<=b devuelve: True
i>b devuelve: False
i>=b devuelve: False
i==b devuelve: False
i!=b devuelve: True
Los operadores && (AND lgico) y || (OR lgico) se ocupan
de comparar dos valores de tipo boolean y retornan como
resultado otro valor de tipo boolean. El operador &&
devuelve true cuando ambos operandos son true, y false
&& AND lgico Binario cuando uno de ellos o los dos son false.

Por ejemplo, la siguiente expresin devolvera true si un


nmero es mayor que 10 y menor que 20:

(num > 10) && (num < 20)


El operador || devuelve true cuando al menos uno de los
operandos es true (pudiendo ser tambin true los dos), y
|| OR lgico Binario false cuando los dos operandos son false. Suelen
combinarse con las operaciones relacionales para
establecer condiciones ms complejas.
Para que veas otro ejemplo, la siguiente expresin
devolvera true si el nmero es igual a 10 o igual a 20:

(num == 10) || (num == 20)


El operador?: (question) evala una expresin como true o
false y devuelve un valor que se le especifique en cada
caso (Si programabas en Visual Basic, equivale ms o
menos a la funcin iif). Vamos a verlo con un ejemplo:

string mensaje = (num == 10)? "El nmero es 10": "El


nmero no es 10";

?: QUESTION Binario Fjate bien. Delante del interrogante se pone la expresin


que debe retornar un valor boolean. Si dicho valor es true,
el operador retornar lo que est detrs del interrogante, y
si es false retornar lo que est detrs de los dos puntos.
No tiene por qu retornar siempre un string. Puede retornar
un valor de cualquier tipo. Por lo tanto, si en este ejemplo
num valiera 10, la cadena que se asignara a mensaje sera
"El nmero es 10", y en caso contrario se le asignara "El
nmero no es 10".
El operador de asignacin (=) (s, s, ya s que nos hemos
hartado de usarlo, pero vamos a verlo con ms
profundidad) asigna lo que hay a la derecha del mismo en
la variable que est a la izquierda. Por ejemplo, la
expresin a = b asignara a la variable a lo que valga la
variable b. La primera norma que no debes olvidar es que
ambas variables han de ser compatibles. Por ejemplo, no
puedes asignar un nmero a una cadena, y viceversa,
tampoco puedes asignar una cadena a una variable de
algn tipo numrico.

=, *=, /=, %=, +=, - El resto de operadores de asignacin son operadores


compuestos a partir de otro operador y el operador de
=, <<=, >>=, &=, ^=, De asignacin Binario asignacin. Veamos a qu equivalen los operadores *=, /=,
|= %=, +=, -=, <<=, >>=, &=, ^=, |=

num *= 10; // Equivale a num = num * 10


num /= 10; // Equivale a num = num / 10
num %= 10; // Equivale a num = num % 10
num += 10; // Equivale a num = num + 10
num -= 10; // Equivale a num = num - 10
num <<= 10; // Equivale a num = num << 10
num >>= 10; // Equivale a num = num >> 10
num &= 10; // Equivale a num = num & 10
num ^= 10; // Equivale a num = num ^ 10
num |= 10; // Equivale a num = num | 10

La precedencia de operadores determina la prioridad con la que se ejecutan cuando hay varios de
ellos en una misma expresin. Efectivamente, el resultado puede ser distinto en funcin del orden en
que se ejecuten.

Vamos con un ejemplo. La expresin 4 + 3 * 6 - 8 devolvera 14, ya que primero se hace la


multiplicacin y despus las sumas y las restas. Si hubiramos querido modificar dicha precedencia
habra que haber usado parntesis: (4+3) *6-8 devolvera 34, ya que primero se ejecuta lo que hay
dentro del parntesis, despus la multiplicacin y, por ltimo, la resta.
La asociatividad de los operadores indica el orden en que se ejecutan cuando tienen la misma
precedencia. Obviamente, esto es aplicable solamente a los operadores binarios. Todos los
operadores binarios son asociativos por la izquierda salvo los de asignacin, que son asociativos por
la derecha.

Por ejemplo, en la expresin 4+3+2, primero se hace 4+3 y a este resultado se le suma el dos, dado
que el operador + es asociativo por la izquierda. Sin embargo, en la expresin b = c = d, como el
operador de asignacin es asociativo por la derecha, primero se asigna a c el valor de d, y despus
se asigna a b el valor de c, es decir, que tras esta expresin las tres variables valdran lo mismo.

Conversiones de Tipo de C#
Las conversiones de tipo de variables en C# se representan en la siguiente tabla en donde la fila es el
origen y la columna el destino.

Leyenda

Rojo Conversin incompatible (I).

Verde Conversin automtica o implcita (A).

Azul Conversin explcita (E).

Conversiones de tipo de datos

boo
byte sbyte short ushort int uint long ulong float double decimal char
l

byte E A A A A A A E E E E I

sbyte E A E A E A A E E E E I

short E E E A A A A E E E E I

ushort E E E A A A A E E E E I

int E E E E E A A E E E E I

uint E E E E E A A E E E E I

long E E E E E E E E E E E I

ulong E E E E E E E E E E E I

float E E E E E E E E A E I I

double E E E E E E E E E E I I

decimal E E E E E E E E E E I I

char E E E A A A A A A A A I

bool I I I I I I I I I I I I
Toda conversin implcita no ocasiona prdida de informacin, truncamientos o redondeos.
Es posible (pero no siempre ocurre) que en una conversin explcita haya prdida de
informacin, truncamientos o redondeos.
En toda conversin implcita el tipo de dato destino es mayor que el tipo de dato origen.
La conversin explcita se realiza indicando el tipo de dato al que se quiere convertir entre
parntesis, seguido del valor:

long valor = 123; // Conversin implcita


long valor = (long)123; // Conversin explcita

Adems de realizarse dentro de una asignacin, las conversiones de tipos tambin tienen lugar dentro
de una expresin, pues en cada operacin ambos operandos deben de ser del mismo tipo. Si la
conversin es del tipo implcito se efecta el siguiente algoritmo en dicho orden:

1. Si un operando es decimal, el otro operando se transforma a decimal.


2. Si un operando es double, el otro operando se transforma a double.
3. Si un operando es float, el otro operando se transforma a float.
4. Si un operando es ulong, el otro operando se transforma a ulong.
5. Si un operando es long, el otro operando se transforma a long.
6. Si un operando es uint, y si el otro operando es de tipo sbyte, short o int, los dos se
transforman a long.
7. Si un operando es uint, el otro operando se transforma a uint.
8. Si no es ninguno de los casos anteriores, los dos operandos se transforman a int.
Bibliografa:
Ferguson, Jeff etal. La biblia de C#, Madrid, Ediciones Anaya Multimedia. Edicin espaola, 2003. 835.
http://es.wikipedia.org/wiki/C_Sharp
http://www.mundonet.es/operadores.html?Pg=Entrega4.htm

You might also like