He visto en algun ejemplo que usaban esto ^ pero nose que quiere decir
bla ^= 5;
Salu2
¿En qué lenguaje estás? Si estás en C/C++ esto es una asignación con XOR binário (http://es.wikipedia.org/wiki/Operadores_de_C_y_C%2B%2B#Operadores_a_nivel_de_bit). Hacer:
int a = 1;
a ^= 2;
Es lo mismo que hacer:
int a = 1;
a = a ^ 2;
Saludos :P
me refiero que hace esto ^, eso es lo que no se.
Cita de: enritter en 2 Julio 2010, 12:32 PM
me refiero que hace esto ^, eso es lo que no se.
Pues léete esto (http://en.wikipedia.org/wiki/Exclusive_or). Otra opción es buscar en Google, que no te vamos a hacer toda la faena, ya puedes buscar tú también ;)
Saludos :P
En algunos lenguajes, es el signo de exponenciacion.
Cita de: neptun0 en 2 Julio 2010, 13:09 PM
En algunos lenguajes, es el signo de exponenciacion.
Por esto le pedí en qué lenguaje programa, cosa que ha pasado olímpicamente. Yo le he dicho cómo es en C/C++.
Saludos :P
La próxima vez, incluye un título mas descriptivo :-\
Por ejemplo sirve para declarar punteros en pascal...
Cita de: neptun0 en 2 Julio 2010, 13:09 PM
En algunos lenguajes, es el signo de exponenciacion.
Seguro? Nunca he visto ninguno xd
Lo siento por no haber respondido antes tuve algunos problemas con el ordenador.. :(
Si el lenguaje era c, gracias por las respuestas
En C/C++ ^ hace la operacion lógica XOR
XOR devuelve 0 si los bits son iguales i 1 cuando los bits son diferentes
ej:
00001111^11001100 => 11000011
Gracias con eso creo que lo entiendo no sabria aplicarlo pero al menos tengo el concepto ;D
Gracias por todo
Compara los bits (http://es.wikipedia.org/wiki/Bit) de dos bytes (http://es.wikipedia.org/wiki/Byte) y pone a 1 los que sean distintos. P. ej.:
235^143=100
235 -> 11101011
143 -> 10001111 ^
--------------------------
100 -> 01100100
Aparte de eso, también se puede usar como signo de exponenciación, como dice neptun0:
int i=2^2;
printf("%d",i);
4
NOTA: Los ejemplos son de lenguaje C.
#include <stdio.h>
int main()
{
signed int var = 2^3;
printf("%d\n", var);
return 0;
}
1
En C no funciona como signo de exponenciación, para eso está la función pow() definida en math.h.
Para exponenciacion se puede hacer una simple rutina de multiplicación reiterada:
unsigned long int elevara(unsigned long int base, unsigned long int exponente)
{
unsigned long int resultado;
if(exponente==0){
resultado=1; //cualquier numero elevado a cero es 1(escepto 0)
return resultado;
}
resultado= base;
for(int i=1; i<exponente; i++){
resultado=resultado*base; //la potenciacion es una multiplicacion reiterada de la base por si misma
} //elnumero de veces que indique el exponente.
return resultado;
}
Esta no si es muy buena pero la hice yo para un codigo mio.
Cita de: tuket en 5 Julio 2010, 20:40 PM
Para exponenciacion se puede hacer una simple rutina de multiplicación reiterada:
unsigned long int elevara(unsigned long int base, unsigned long int exponente)
{
unsigned long int resultado;
if(exponente==0){
resultado=1; //cualquier numero elevado a cero es 1(escepto 0)
return resultado;
}
resultado= base;
for(int i=1; i<exponente; i++){
resultado=resultado*base; //la potenciacion es una multiplicacion reiterada de la base por si misma
} //elnumero de veces que indique el exponente.
return resultado;
}
Esta no si es muy buena pero la hice yo para un codigo mio.
Aquí hay un ligero error:
if(exponente==0){
resultado=1; //cualquier numero elevado a cero es 1(escepto 0)
return resultado;
}
Haces return dos veces.
CitarSentencia de retorno "return"
Esta sentencia sale de la función donde se encuentra y devuelve el control a la rutina que
la llamó, opcionalmente con un valor de retorno.
Realmente cuando se ejecuta la 1º se abandona la función, es dicir, nose puede ejecutar la 2ª.
Mira este ejemplo:
#include <iostream>
int funciondeprueba();
int main(){
std::cout<<funciondeprueba()<<std::endl;
}
int funciondeprueba(){
return 1;
return 2;
return 3;
}
Una vez que hace reurn 1; ya no puede hacer return 2; ni return 3;.
Por eso devuelve 1; :
tuket@tuket-desktop:~$ g++ pru.cpp
tuket@tuket-desktop:~$ ./a.out
1
tuket@tuket-desktop:~$
Es como cuando en ensamblador haces retn se abandona la funcion y ya no hace nada mas.
Cita de: tuket en 6 Julio 2010, 15:31 PM
CitarSentencia de retorno "return"
Esta sentencia sale de la función donde se encuentra y devuelve el control a la rutina que
la llamó, opcionalmente con un valor de retorno.
Realmente cuando se ejecuta la 1º se abandona la función, es dicir, nose puede ejecutar la 2ª.
Mira este ejemplo:
#include <iostream>
int funciondeprueba();
int main(){
std::cout<<funciondeprueba()<<std::endl;
}
int funciondeprueba(){
return 1;
return 2;
return 3;
}
Una vez que hace reurn 1; ya no puede hacer return 2; ni return 3;.
Por eso devuelve 1; :
tuket@tuket-desktop:~$ g++ pru.cpp
tuket@tuket-desktop:~$ ./a.out
1
tuket@tuket-desktop:~$
Es como cuando en ensamblador haces retn se abandona la funcion y ya no hace nada mas.
¿Y luego?
No le veo el caso de que hayas puesto otro return, porque esos return' s están dentro del IF, así que sí es error, por lo menos conceptual.
No le hallo sentido a tu replica.
mira esto
if (edad > 18)
return "mayor";
else
return "menor";
Entiendes, se pueden poner cuantos return quieras......... solo depende de las opciones que quieras devolver!
Cita de: raul338 en 6 Julio 2010, 18:47 PM
mira esto
if (edad > 18)
return "mayor";
else
return "menor";
Entiendes, se pueden poner cuantos return quieras......... solo depende de las opciones que quieras devolver!
Entiendo, claro.
Ya ví mi error, aquí equivocadamente vi dos sentencias return:
if(exponente==0){
resultado=1; //cualquier numero elevado a cero es 1(escepto 0)
return resultado;
}
Por eso reclamé.
En todo caso esto no tiene fundamento:
int funciondeprueba(){
return 1;
return 2;
return 3;
}
Si la función es llamada siempre devolvería 1, no hay por qué poner los otros dos returns.
Saludos.
Ya lo se, era un ejemplo para demostrar justamente eso XD
Por cierto raul338, un return no puede devolver una cadena de carácteres, tal vez sin comitas...
Cita de: tuket en 6 Julio 2010, 21:01 PM
Por cierto raul338, un return no puede devolver una cadena de carácteres, tal vez sin comitas...
C++ no puede eso? D:
En todo caso, en otros lenguajes si :xD
Ademas, fue pseudocodigo xD
Puede devolver un string:
#include <iostream>
std::string algo(void)
{
return "bye";
}
int main(void)
{
std::cout << algo() << std::endl;
return 0;
}
Cita de: Leo Gutiérrez. en 5 Julio 2010, 20:28 PM
#include <stdio.h>
int main()
{
signed int var = 2^3;
printf("%d\n", var);
return 0;
}
1
En C no funciona como signo de exponenciación, para eso está la función pow() definida en math.h.
Tienes toda la razón, me había liado. En C sólo funciona como operador XOR. :-[ :-[