Article View: es.comp.os.linux.programacion
Article #1774Re: valor por defecto de variables no definidas
From: 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/
Technical Details
Message-ID:
<oqc6f1p28har8pn1t9mlvb8lhh4kda9t2i@4ax.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!newsfeed.hal-mli.net!feeder1.hal-mli.net!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mailReferences:
<vVFIe.2729369$I96.3248103@telenews.teleline.es>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,459d36b6f4d8c1a5 X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!news.glorb.com!newsfeed.hal-mli.net!feeder1.hal-mli.net!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail From: Oscar Garcia <redstarQUITARSPAM23@terra.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: valor por defecto de variables no definidas Date: Fri, 05 Aug 2005 11:47:55 +0200 Organization: Ecolnet Lines: 86 Message-ID: <oqc6f1p28har8pn1t9mlvb8lhh4kda9t2i@4ax.com> References: <vVFIe.2729369$I96.3248103@telenews.teleline.es> NNTP-Posting-Host: 62-14-83-142.inversas.jazztel.es Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: cormoran.emeteo.local 1123235276 5875 62.14.83.142 (5 Aug 2005 09:47:56 GMT) X-Complaints-To: emeteo@escomposlinux.org NNTP-Posting-Date: Fri, 5 Aug 2005 09:47:56 +0000 (UTC) X-Newsreader: Forte Free Agent 2.0/32.652