• Viernes 8 de Noviembre de 2024, 08:37

Autor Tema:  Diferenciaa  (Leído 9787 veces)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #25 en: Martes 5 de Diciembre de 2006, 22:23 »
0
Cita de: "JuanK"
C con clase:

Citar
Macro NULL ANSI C

#define NULL

Un puntero nulo constante definido según la implementación.

Ejemplo:

#define NULL 0  DJGPP
#define NULL 0
ó
#define NULL 0L
ó
#define NULL ((void *)0)  Borland
#define NULL ((void*0) /* Para C++ */  Dev-C++
No es un standard de facto para nada, estas confundido y confundiendo innecesariamente.

Como ves y pones, la diferencia son castings diferentes, todos tiene VALOR 0 y eso si esta en el standard especificado claramente.

"An integral constant expression with the value 0, or such an expression cast to void *, is called a null pointer constant. "

"-1- A null pointer constant is an integral constant expression (expr.const) rvalue of integer type that evaluates to zero"

Ademas es NULL ... NULL!!

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #26 en: Martes 5 de Diciembre de 2006, 22:24 »
0
Cita de: "JuanK"
Yo no hago perder el tiempo... cada cual pierde el tiempo como quiere  <_<
Si lo haces, no tenes ni la menor idea de lo que hablas y mantenes una posicion ridicula. Esta clarisimo que el valor de NULL es 0, lo dice el standard y hay citas hasta de las paginas que vos trajiste a este hilo. No ves que la diferencia es el casting, muy bien, es tu problema. NULL es 0, siempre, no hay duda, no es un standard de facto es lo que viene en el standard, su valor es 0 si o si.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Diferenciaa
« Respuesta #27 en: Martes 5 de Diciembre de 2006, 22:26 »
0
en español la palabra es  Estándar :P


yo tengo una duda  :ph34r:


A veces null es 0 pero a veces no por ejemplo


Apuntar un puntero (valga la 'rebusnancia'  :ph34r: ) a NULL seria enviarlo al inicio?




o por ejemplo en un arreglo puedo hacer esto?

numeros[5]={1,2,3,4,5}; //Que tal ahora :P

printf ("Numero en la posicion 0 es: %d ",numeros[NULL]);

Citar
Numero en la posicion 0 es: 1


?????  :ph34r:


es una duda   camaradas :beer:
saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #28 en: Martes 5 de Diciembre de 2006, 22:30 »
0
Cita de: "F_Tanori"
en español la palabra es  Estándar :P

Efectivamente:

estándar.
 (Del ingl. standard).

Cita de: "F_Tanori"
A veces null es 0 pero a veces no por ejemplo

No, NULL siempre tiene como valor 0, y si el puntero tiene valor 0 y si accedes genera una excepcion por leer/escribir en esa direccion.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #29 en: Martes 5 de Diciembre de 2006, 22:32 »
0
OK,


Ni siquiera compilaría en VC++

Código: Text
  1. numeros[5]={1,2,3,4,5,6};
  2.  
  3. printf ("Numero en la posicion 0 es:",numeros[NULL]);
  4.  

Citar
Error   1   error C2107: illegal index, indirection not allowed   
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Diferenciaa
« Respuesta #30 en: Martes 5 de Diciembre de 2006, 22:34 »
0
Cita de: "F_Tanori"
o por ejemplo en un arreglo puedo hacer esto?

numeros[5]={1,2,3,4,5,6};

printf ("Numero en la posicion 0 es:",numeros[NULL]);

Citar
Numero en la posicion 0 es: 1
Buen ejemplo F_Tanori, yo soy el menos indicado para opinar y solo lo voy a hacer a manera lo poco que he entendido.

Siguiendo con lo de que un desocupado hiciera apuntar a NULL a otra dirección en este caso '5', 'tons numeros[NULL] sería igual a '6'

Entonces deduciendo por parte y parte tienen razón.
 :lightsabre:  :lightsabre:  :lightsabre:
NO NO ME PEGUEN NO ME PEGUEN
 :ouch:  :ouch:  :ouch:

NULL actualmente es y sera '0', pero si alguién lo cambia puede apuntar donde quiera.
El pasado son solo recuerdos, el futuro son solo sueños

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #31 en: Martes 5 de Diciembre de 2006, 22:34 »
0
Mentira, haciendolo bien tenes tu 1 en pantalla:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int numeros[]={1,2,3,4,5,6};
  7.   printf ("Numero en la posicion 0 es: %d",numeros[NULL]);  
  8. }
  9.  
  10.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #32 en: Martes 5 de Diciembre de 2006, 22:35 »
0
Cita de: "RadicalEd"
NULL actualmente es y sera '0', pero si alguién lo cambia puede apuntar donde quiera.
Si, puede ser cambiado PERO y es un gran pero, quebrarias el standard.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #33 en: Martes 5 de Diciembre de 2006, 22:39 »
0
Cita de: "Eternal Idol"
Mentira, haciendolo bien tenes tu 1 en pantalla:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int numeros[]={1,2,3,4,5,6};
  7.   printf ("Numero en la posicion 0 es: %d",numeros[NULL]);  
  8. }
  9.  
  10.  
MENTIRA!!!!

tal como esta mostrado no compila.

Código: Text
  1. int numeros[5]={1,2,3,4,5,6};
  2. printf ("Numero en la posicion 0 es:",numeros[NULL]);
  3.  


primero que todo porque el arreglo es de 5 y esta llenado con 6... :whistling:

Y segundo aun si se soluciona eso bota el error que dije.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Diferenciaa
« Respuesta #34 en: Martes 5 de Diciembre de 2006, 22:41 »
0
Cita de: "Eternal Idol"
Cita de: "RadicalEd"
NULL actualmente es y sera '0', pero si alguién lo cambia puede apuntar donde quiera.
Si, puede ser cambiado PERO y es un gran pero, quebrarias el standard.
sip, eso si.

Mira estos errores:
Citar
pointer.c: En la función `main':
pointer.c:5: error: array subscript is not an integer
[/color]
El pasado son solo recuerdos, el futuro son solo sueños

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #35 en: Martes 5 de Diciembre de 2006, 22:43 »
0
Cita de: "JuanK"
MENTIRA!!!!

tal como esta mostrado no compila.

primero que todo porque el arreglo es de 5 y esta llenado con 6... :whistling:

Y segundo aun si se soluciona eso bota el error que dije.
Que manera de hablar al pedo, por supuesto que no compila si pones mal el tamaño del array! Si hubieras visto mi codigo te darias cuenta de que eso esta solucionado aunque claro tenes que decir que lo hiciste vos ...

Con cl archivo.cpp compila perfectamente.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Diferenciaa
« Respuesta #36 en: Martes 5 de Diciembre de 2006, 22:43 »
0
Entonces ....???? :ph34r:

Yo creo que es un espacio reservado que tal vez al convertirlo a entero se hace 0

es como pasar "" (vacio) a entero da cero  o no? <_<

 esto basado en mi experiencia (mucho menor a los de muchos aqui  :smartass:  ) y todo en un contexto de duda :ph34r:


Se ponen sabrosas estas discuciones :P, en buen plan porque salimos de la ignoracia



 :smartass:  :comp:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #37 en: Martes 5 de Diciembre de 2006, 22:45 »
0
Cita de: "RadicalEd"
Mira estos errores:
Citar
pointer.c: En la función `main':
pointer.c:5: error: array subscript is not an integer
Logicamente puede no funcionar al poder estar definido como un puntero, eso es lo que dice CLARAMENTE el standard que es definido por el compilador.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #38 en: Martes 5 de Diciembre de 2006, 22:46 »
0
Cita de: "Eternal Idol"
Con cl archivo.cpp compila perfectamente.
claro porque al cambiarle la extencion ya no estamos hablando de C, sino de C++.

Esto es compilándolo como código de C:

Citar
C:\Documents and Settings\jruiz\Escritorio>cl code.c
Microsoft ® 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright © Microsoft Corporation.  All rights reserved.

code.c
code.c(6) : error C2107: illegal index, indirection not allowed

C:\Documents and Settings\jruiz\Escritorio>
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Diferenciaa
« Respuesta #39 en: Martes 5 de Diciembre de 2006, 22:47 »
0
Cita de: "JuanK"
Cita de: "Eternal Idol"
Mentira, haciendolo bien tenes tu 1 en pantalla:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int numeros[]={1,2,3,4,5,6};
  7.   printf ("Numero en la posicion 0 es: %d",numeros[NULL]);  
  8. }
  9.  
  10.  
MENTIRA!!!!

tal como esta mostrado no compila.

Código: Text
  1. int numeros[5]={1,2,3,4,5,6};
  2. printf ("Numero en la posicion 0 es:",numeros[NULL]);
  3.  


primero que todo porque el arreglo es de 5 y esta llenado con 6... :whistling:

Y segundo aun si se soluciona eso bota el error que dije.
no respete la sintaxis, es mas yo casi ni uso C :P, era un ejemplo pense que se entendia a que me referia :P


me equivoque con lo del arreglo pero ya saben a lo que me referia :P


( si NULL=0 el motivo de esta charla)


 :whistling:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #40 en: Martes 5 de Diciembre de 2006, 22:49 »
0
Cita de: "JuanK"
claro porque al cambiarle la extencion ya no estamos hablando de C, sino de C++.
 
Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int numeros[6]={1,2,3,4,5,6};
  7.   printf ("Numero en la posicion 0 es: %d",numeros[(int)NULL]);  
  8. }
  9.  
  10.  

Castings, si, lo que puede definir el compilador a su gusto.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #41 en: Martes 5 de Diciembre de 2006, 22:50 »
0
en ningún lado de ANSI C dice que solo los castings.  :whistling:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Diferenciaa
« Respuesta #42 en: Martes 5 de Diciembre de 2006, 22:51 »
0
Cita de: "F_Tanori"
Entonces ....???? :ph34r:

...Yo creo que es un espacio reservado que tal vez al convertirlo a entero se hace 0

es como pasar "" (vacio) a entero da cero ...

 :smartass:  :comp:


 :rolleyes:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Diferenciaa
« Respuesta #43 en: Martes 5 de Diciembre de 2006, 22:51 »
0
Cita de: "JuanK"
Cita de: "Eternal Idol"
Con cl archivo.cpp compila perfectamente.
claro porque al cambiarle la extencion ya no estamos hablando de C, sino de C++.

Esto es compilándolo como código de C:

Citar
C:\Documents and Settings\jruiz\Escritorio>cl code.c
Microsoft ® 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright © Microsoft Corporation.  All rights reserved.

code.c
code.c(6) : error C2107: illegal index, indirection not allowed

C:\Documents and Settings\jruiz\Escritorio>
Sin embargo
Citar
pointer.cpp: En function `int main()':
pointer.cpp:5: aviso: converting NULL to non-pointer type
[/color]
El pasado son solo recuerdos, el futuro son solo sueños

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #44 en: Martes 5 de Diciembre de 2006, 22:54 »
0
Wow, ahora hay que reeler lo que cite....

Código: Text
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5.  int numeros[]= { 1, 2, 3, 4, 5, 6 };
  6.  Ver(numeros, 5);
  7.  int i = 0;
  8.   printf("NULL: %d ", numeros[NULL]);
  9.   printf("Con i: %d ", numeros[i]);
  10. }
  11.  
  12.  

Ahora, yo no se de C/C++ asi que como dice Radical, no me peguen
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #45 en: Martes 5 de Diciembre de 2006, 22:55 »
0
Cita de: "JuanK"
en ningún lado de ANSI C dice que solo los castings.  :whistling:
Sos un NECIO, el valor es 0 asi que ya nos contaras que es lo que les permiten definir:

Esto es de tu pagina http://www.greenend.org.uk/rjk/2001/02/cfu.html:

The standard says:
An integral constant expression with the value 0, or such an expression cast to void *, is called a null pointer constant. If a null pointer constant is assigned to or compared for equality to a pointer, the constant is converted to a pointer of that type. Such a pointer, called a null pointer, is guaranteed to compared unequal to a pointer to any object or function.

#define NULL 10-10 es valido tambien.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #46 en: Martes 5 de Diciembre de 2006, 22:59 »
0
Cita de: "su -"
Ahora, yo no se de C/C++ asi que como dice Radical, no me peguen
Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. void main()
  5. {
  6.   int numeros[]= { 1, 2, 3, 4, 5, 6 };
  7.   int i = 0;
  8.  printf("NULL: %d ", numeros[(int)NULL]);
  9.  printf("Con i: %d ", numeros[i]);
  10. }
  11.  
  12.  

Asi da compilado en C y C++: "NULL: 1 Con i: 1"

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #47 en: Martes 5 de Diciembre de 2006, 23:00 »
0
yo solo digo unas cosas:

1- yo uso null como si fuera 0, siempre

2- el hecho de que yo y la mayoria o la totalidad lo use asi no implica que sea lo absolutamente cierto cierto... me gusta sembrar controversia para ponernos a pensar, porque para mi ese rollo no esta claro por ANSI C, ni por ningún lado.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #48 en: Martes 5 de Diciembre de 2006, 23:02 »
0
Cita de: "JuanK"
yo solo digo unas cosas:

1- yo uso null como si fuera 0, siempre

2- el hecho de que yo y la mayoria o la totalidad lo use asi no implica que sea lo absolutamente cierto cierto... me gusta sembrar controversia para ponernos a pensar, porque para mi ese rollo no esta claro por ANSI C, ni por ningún lado.
Decis muchas cosas, lamentablemente soles hablar de cosas que no sabes o no logras comprender. En este caso como lo vas a tener claro si no sabes ingles ...

En el otro hilo te segui la corriente ya que la verdad no me habia tomado la molestia de leer lo suficiente y pense que tal vez estabas acertado pero la verdad es que no, no hay forma de definir NULL a un valor diferente a 0 sin romper el standard.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Diferenciaa
« Respuesta #49 en: Martes 5 de Diciembre de 2006, 23:04 »
0
Cita de: "JuanK"
yo solo digo unas cosas:

1- yo uso null como si fuera 0, siempre

2- el hecho de que yo y la mayoria o la totalidad lo use asi no implica que sea lo absolutamente cierto cierto... me gusta sembrar controversia para ponernos a pensar, porque para mi ese rollo no esta claro por ANSI C, ni por ningún lado.


osea no llegamos a nada  :unsure:


y el hilo se va cerrar  :o   :P


hagamos como ms sin estandares :devil:

o entonces se queda

NULL es 0 un espacio definido por el compilador que puede ser modificado por el programador para apuntar hacia donde le pege la gana, aunque eso es 'romper' el estandar pero es posible hacer que null no sea 0

 :smartass:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================