Thread View: es.comp.os.linux.programacion
7 messages
7 total messages
Started by David Fraga
Fri, 05 Aug 2005 09:01
valor por defecto de variables no definidas
Author: David Fraga
Date: Fri, 05 Aug 2005 09:01
Date: Fri, 05 Aug 2005 09:01
45 lines
2212 bytes
2212 bytes
hola
em...
discutiendo con un colega de programaci�n sucedi� lo siguiente:
el mantenia que en php o actionscript, una variable no definida ni
declarada, el valor por defecto seria TRUE y yo decia que como en todos
los lenguajes, una variable ni declarada ni definida, seria FALSE.
asi que para salir de dudas, hice en PHP el siguiente codigo:
<?php
if(vindefinida)
{
print("ES TRUE");
}else{
print("ES FALSE");
}
?>
al ejecutarlo, mi sorpresa fue que mi amigo tenia razon y en PHP, el
valor de "vindefinida" es TRUE ya que no ha sido declarada.
entonces pienso... estoy muy mal, voy a probar en VB por ejemplo...
If vindefinida Then
msgbox "es TRUE"
Else
msgbox "es FALSE"
End If
dando como resultado FALSE.
se que en C y en otros lenguajes es siempre FALSE, solo PHP o
ActionScript del Flash son TRUE.
�alguien sabe porque?
aun no entiendo el funcionamiento del condicional de PHP para que sea
TRUE si aun no se ha definido �?�?�?�? :(
p.d. logicamente, perdi la apuesta :(
Re: valor por defecto de variables no definidas
Author: Alvaro G Vicario
Date: Fri, 05 Aug 2005 09:36
Date: Fri, 05 Aug 2005 09:36
31 lines
2140 bytes
2140 bytes
*** David Fraga wrote/escribi� (Fri, 05 Aug 2005 09:01:15 GMT): > se que en C y en otros lenguajes es siempre FALSE, solo PHP o > ActionScript del Flash son TRUE. > > �alguien sabe porque? No s� por qu�, pero aqu� tienes una tabla que te explica cada caso: http://docs.php.net/es/types.comparisons.html Como ves, una variable no definida es FALSE si fuerzas su conversi�n a booleano. En tu c�digo da TRUE ya que se trata de una *constante* no definida: http://es2.php.net/manual/es/language.constants.php "Si usas una constante todavia no definida, PHP asume que est�s refiri�ndote al nombre de la constante en si. Se lanzar� un aviso si esto sucede. Usa la funci�n defined() para comprobar la existencia de dicha constante." Es decir, tenemos el string "vindefinida" que, seg�n la tabla anterior, forzado a booleano da TRUE. -- -- �lvaro G. Vicario - Burgos, Spain -- http://bits.demogracia.com - Mi sitio sobre programaci�n web -- Don't e-mail me your questions, post them to the group --
Re: valor por defecto de variables no definidas
Author: Oscar Garcia
Date: Fri, 05 Aug 2005 09:47
Date: Fri, 05 Aug 2005 09:47
86 lines
3712 bytes
3712 bytes
El Fri, 05 Aug 2005 09:01:15 GMT, David Fraga <david@tresbes.net>
escribi�:
>asi que para salir de dudas, hice en PHP el siguiente codigo:
><?php
> if(vindefinida)
if($vindefinida)
> {
> print("ES TRUE");
> }else{
> print("ES FALSE");
> }
>
>?>
>al ejecutarlo, mi sorpresa fue que mi amigo tenia razon y en PHP, el
>valor de "vindefinida" es TRUE ya que no ha sido declarada.
Si usas if (vindefinida) entonces PHP se piensa que quieres usar
"vindefinida" como una cadena de caracteres (para darle sentido a que
no es una variable porque no empieza por $).
Cualquier cosa distinta de 0 ya sabes que es "verdadera" por eso te
sale verdadero. En caso de que lo pongas bien ($vindefinida) ver�s que
entonces te sale "falso" porque cualquier variable indefinida no
cumple ninguna condici�n ($vindef > 5 es falso, $vindef <= 5 tambi�n
es falso).
>entonces pienso... estoy muy mal, voy a probar en VB por ejemplo...
>If vindefinida Then
> msgbox "es TRUE"
>Else
> msgbox "es FALSE"
>End If
>dando como resultado FALSE.
En Visual Basic SIEMPRE se inicializan las variables (aunque no les
pongas un valor expl�citamente).
En este caso hablamos de variables sin definir (que son objetos
"variant") y variables definidas pero no inicializadas (que toman el
valor por defecto de su tipo).
Si fuera una variable sin inicializar de tipo entero entonces vindef >
5 ser�a falso pero vindef <= 5 ser�a verdadero.
>se que en C y en otros lenguajes es siempre FALSE, solo PHP o
>ActionScript del Flash son TRUE.
Error. En C y otros muchos lenguajes no se puede hacer uso de
variables no definidas.
Quiz� te refieras a:
int main () {
int valor;
if (valor) {...}
}
Donde estamos entrando en estad�stica. Ya que adquirir� un valor
aleatorio que se encuentre en la zona de memoria usada por la pila que
el programa no inicializa si no se le pide expresamente (�para qu�
malgastar CPU si quiza no sea necesario? para eso est� inicializarlo
voluntariamente).
En ese caso cualquier valor disinto de 0 es "verdadero" y s�lo 0 vale
"falso". Las probabilidades de que valor valga 0 u otro valor depende
de muchas cosas (equipo reci�n encendido, por ejemplo), pero no tiene
nada que ver con que valga siempre "verdadero" o "falso" si no se
inicializa.
>�alguien sabe porque?
>aun no entiendo el funcionamiento del condicional de PHP para que sea
>TRUE si aun no se ha definido �?�?�?�? :(
Espero que te lo haya explicado bien.
>p.d. logicamente, perdi la apuesta :(
Hizo trampa.
--
�scar Javier Garc�a Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Re: valor por defecto de variables no definidas
Author: David Serrano (Hue-Bond)
Date: Fri, 05 Aug 2005 10:37
Date: Fri, 05 Aug 2005 10:37
31 lines
1873 bytes
1873 bytes
David Fraga, vie20050805@11:01:15(CEST):
>
Paso mucho de PHP así que no voy a responder a esto pero...
> como en todos los lenguajes, una variable ni declarada ni definida, seria
> FALSE.
$ perl -e 'use strict; use warnings; $c=348;'
Global symbol "$c" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
$ _
$ cat > a.c
int main (void) { if (a) printf ("%d\n", a); return 0; }
$ gcc -Wall -std=c99 -o a a.c
a.c: En la funci `main':
a.c:1: error: `a' undeclared (first use in this function)
$ python2.3 -c "print a"
Traceback (most recent call last):
File "<string>", line 1, in ?
NameError: name 'a' is not defined
$ _
--
David Serrano
Re: valor por defecto de variables no definidas
Author: Tracker
Date: Fri, 05 Aug 2005 11:33
Date: Fri, 05 Aug 2005 11:33
2 lines
1515 bytes
1515 bytes
si, perdon, dije "ni declarada ni definida" y solo queria decir "no definida".
Re: valor por defecto de variables no definidas
Author: Tracker
Date: Fri, 05 Aug 2005 11:33
Date: Fri, 05 Aug 2005 11:33
1 lines
1438 bytes
1438 bytes
muchas gracias, me has resuelto las dudas.
Re: valor por defecto de variables no definidas
Author: Tracker
Date: Fri, 05 Aug 2005 11:34
Date: Fri, 05 Aug 2005 11:34
1 lines
1451 bytes
1451 bytes
tu explicaci�n es perfecta para mi. muchas gracias.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads