• Viernes 8 de Noviembre de 2024, 08:34

Autor Tema:  Diferenciaa  (Leído 9785 veces)

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #50 en: Martes 5 de Diciembre de 2006, 23:07 »
0
Cita de: "Eternal Idol"
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"
Que raro, a mi me dice que NULL no es un entro, no compila, defini NULL (no se si deba) asi:
Código: Text
  1. #include <stdio.h>
  2.  
  3. #define NULL (char *)0) /* no se si este bien */
  4.  
  5. void main()
  6. {
  7.   int numeros[]= { 1, 2, 3, 4, 5, 6 };
  8.   int i = 0;
  9.  printf("NULL: %d ", numeros[(int)NULL]);
  10.  printf("Con i: %d ", numeros[i]);
  11. }
  12.  

Y Dice (GCC 4.1.1)
In file include from /usr/include/_G_confi.h:14,
from /usr/include/libio.h:32, from /usr/include/stdio.h:72, from test.c:1
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h:402:1:1 warning: this is the location of the previous deinition
test.c: In function 'main':
test.c:10: error: array subscript is not an integer :unsure:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Diferenciaa
« Respuesta #51 en: Martes 5 de Diciembre de 2006, 23:07 »
0
Cita de: "F_Tanori"
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
Entonces, finalmete deduciendo al final (jejeje)

NULL puede ser diferente de '0', solo que no se cambia por no dañar un standard
El pasado son solo recuerdos, el futuro son solo sueños

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #52 en: Martes 5 de Diciembre de 2006, 23:08 »
0
Cita de: "F_Tanori"
osea no llegamos a nada  :unsure:

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
Todo lo contrario, llegamos mucho mas lejos que en el hilo anterior donde quedo una verdad a medias. NULL suele ser una macro con lo cual hasta la podemos definir nosotros, si no incluimos ningun header no existe, y podemos poner #define NULL 5005 o #define NULL 140-139-1. El primero quebraria el standard y el segundo no. CUALQUIER compilador de C y C++ que se precie seguira el standard, especialmente en cosas tan simples.

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 #53 en: Martes 5 de Diciembre de 2006, 23:09 »
0
comparto lo que dice radical, solo que en ningún lado dice que por estandar null deba ser 0
[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 #54 en: Martes 5 de Diciembre de 2006, 23:10 »
0
Cita de: "su -"
Que raro, a mi me dice que NULL no es un entro, no compila, defini NULL (no se si deba) asi:
Código: Text
  1. #include <stdio.h>
  2.  
  3. #define NULL (char *)0) /* no se si este bien */
  4.  
  5. void main()
  6. {
  7.   int numeros[]= { 1, 2, 3, 4, 5, 6 };
  8.   int i = 0;
  9.  printf("NULL: %d ", numeros[(int)NULL]);
  10.  printf("Con i: %d ", numeros[i]);
  11. }
  12.  

Y Dice (GCC 4.1.1)
In file include from /usr/include/_G_confi.h:14,
from /usr/include/libio.h:32, from /usr/include/stdio.h:72, from test.c:1
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h:402:1:1 warning: this is the location of the previous deinition
test.c: In function 'main':
test.c:10: error: array subscript is not an integer :unsure:
NULL ya esta definido su-, por eso suelta el error.
El pasado son solo recuerdos, el futuro son solo sueños

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #55 en: Martes 5 de Diciembre de 2006, 23:10 »
0
Cita de: "Eternal Idol"
CUALQUIER compilador de C y C++ que se precie seguira el standard, especialmente en cosas tan simples.
lo que pasa es que ese 'que se precie' es un juicio de cada cual, proque el que lo quiera hacer diferente es libre de hacerlo... incluso un compilador hecho pro estudiantes sin necesidad de que 'se precie' puede escoger usar NULL como 0
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #56 en: Martes 5 de Diciembre de 2006, 23:11 »
0
Cita de: "su -"
Cita de: "Eternal Idol"
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"
Que raro, a mi me dice que NULL no es un entro, no compila, defini NULL (no se si deba) asi:
Código: Text
  1. #include <stdio.h>
  2.  
  3. #define NULL (char *)0) /* no se si este bien */
  4.  
  5. void main()
  6. {
  7.   int numeros[]= { 1, 2, 3, 4, 5, 6 };
  8.   int i = 0;
  9.  printf("NULL: %d ", numeros[(int)NULL]);
  10.  printf("Con i: %d ", numeros[i]);
  11. }
  12.  

Y Dice (GCC 4.1.1)
In file include from /usr/include/_G_confi.h:14,
from /usr/include/libio.h:32, from /usr/include/stdio.h:72, from test.c:1
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h:402:1:1 warning: this is the location of the previous deinition
test.c: In function 'main':
test.c:10: error: array subscript is not an integer :unsure:
tendrias que hacerle un #undef...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #57 en: Martes 5 de Diciembre de 2006, 23:14 »
0
Aun asi, aunque este definido en stdio GCC no lo ve como un numero entero, Radical le da el mismo error.
*******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 #58 en: Martes 5 de Diciembre de 2006, 23:14 »
0
Cita de: "JuanK"
Cita de: "Eternal Idol"
CUALQUIER compilador de C y C++ que se precie seguira el standard, especialmente en cosas tan simples.
lo que pasa es que ese 'que se precie' es un juicio de cada cual, proque el que lo quiera hacer diferente es libre de hacerlo... incluso un compilador hecho pro estudiantes sin necesidad de que 'se precie' puede escoger usar NULL como 0
Si, PERO NO SERIA STANDARD, que es lo que afirmaste en el otro hilo. NO SERIA STANDARD.

Te invito a dejar la necedad y RAZONAR, deja de hacer el ridiculo:


Esto es lo que dijiste primero:
Macro NULL ANSI C
#define NULL
Un puntero nulo constante definido según la implementación.

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.

¿Que es un puntero nulo constante segun el standard? Una expresion constante cuyo valor es 0. ¿Lo entendes o no sos capaz?

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.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Diferenciaa
« Respuesta #59 en: Martes 5 de Diciembre de 2006, 23:16 »
0
Cita de: "su -"
Aun asi, aunque este definido en stdio GCC no lo ve como un numero entero, Radical le da el mismo error.
Por que no es un entero, es un puntero.
El pasado son solo recuerdos, el futuro son solo sueños

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #60 en: Martes 5 de Diciembre de 2006, 23:18 »
0
Cita de: "RadicalEd"
Cita de: "su -"
Aun asi, aunque este definido en stdio GCC no lo ve como un numero entero, Radical le da el mismo error.
Por que no es un entero, es un puntero.
Eso te pasa cuando usas lenguajes post-modernos  :wacko: donde no hay problema contal cosa (si en Perl se puede, sin problema)  :smartass:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Diferenciaa
« Respuesta #61 en: Martes 5 de Diciembre de 2006, 23:19 »
0
Cita de: "Eternal Idol"
Cita de: "JuanK"
Cita de: "Eternal Idol"
CUALQUIER compilador de C y C++ que se precie seguira el standard, especialmente en cosas tan simples.
lo que pasa es que ese 'que se precie' es un juicio de cada cual, proque el que lo quiera hacer diferente es libre de hacerlo... incluso un compilador hecho pro estudiantes sin necesidad de que 'se precie' puede escoger usar NULL como 0
Si, PERO NO SERIA STANDARD, que es lo que afirmaste en el otro hilo. NO SERIA STANDARD.

Te invito a dejar la necedad y RAZONAR, deja de hacer el ridiculo:


Esto es lo que dijiste primero:
Macro NULL ANSI C
#define NULL
Un puntero nulo constante definido según la implementación.

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.

¿Que es un puntero nulo constante segun el standard? Una expresion constante cuyo valor es 0. ¿Lo entendes o no sos capaz?
Solo te duele no tener la razón.

cada cual que defina por si mismo que es que... para mi no quedo definido nada de lo que tu dices, pero tampoco lo que yo dije... el estándar o no es claro o esta libre a como lo quiera hacer cada cual.

No es necesario insultar a nadie para hacerse notar.  ;)
[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 #62 en: Martes 5 de Diciembre de 2006, 23:22 »
0
Cita de: "JuanK"
Solo te duele no tener la razón.

cada cual que defina por si mismo que es que... para mi no quedo definido nada de lo que tu dices, pero tampoco lo que yo dije... el estándar o no es claro o esta libre a como lo quiera hacer cada cual.
Pobrecito, el que no tiene la razon sos vos y no tenes COMO SIEMPRE la capacidad de hacer autocritica. Se nota que pasan los años y seguis siendo el mismo, es una pena.

El standard es CLARISIMO, NULL tiene que tener como valor 0. De no verlo te recomiendo comprar anteojos.

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 #63 en: Martes 5 de Diciembre de 2006, 23:25 »
0
El que quiera ver que vea:

"Macro NULL ANSI C
#define NULL
Un puntero nulo constante definido según la implementación. "

4.10 - Pointer conversions [conv.ptr]

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

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.

El valor de un puntero nulo constante es 0.

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 #64 en: Martes 5 de Diciembre de 2006, 23:25 »
0
por el momento al menos no he visto en ningún lugar de ANSI C que diga que NULL DEBE ser 0...

Dice que :

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


Y si... es dificil cambiar... y tú eres un muy buen ejemplo también...  :lol:  pero ni modo asi somos, con virtudes y defectos.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #65 en: Martes 5 de Diciembre de 2006, 23:27 »
0
Disculpen, pero creo que los menajes de "yo tengo la razon y tu no" van mejor por MP no me pelen, solo sugiero, es que asi el foro se ve sucio, que se puede esperar de un lugar que hablan y hablan de difernecias en "peleas" por algo que no debe...
Lo sugiero para que se tenga que cerrar esto...
 :)
*******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 #66 en: Martes 5 de Diciembre de 2006, 23:28 »
0
Cita de: "JuanK"
por el momento al menos no he visto en ningún lugar de ANSI C que diga que NULL DEBE ser 0...

Dice que :

Un puntero nulo constante definido según la implementación.
Es que no debe ser 0. ¿Tenes problemas de compresion? SU VALOR DEBE SER 0.
¿No leiste todavia lo que es un puntero nul constante?

4.10 - Pointer conversions [conv.ptr]

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

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.

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 #67 en: Martes 5 de Diciembre de 2006, 23:30 »
0
Cita de: "su -"
Disculpen, pero creo que los menajes de "yo tengo la razon y tu no" van mejor por MP no me pelen, solo sugiero, es que asi el foro se ve sucio, que se puede esperar de un lugar que hablan y hablan de difernecias en "peleas" por algo que no debe...
Lo sugiero para que se tenga que cerrar esto...
 :)
No hay razon en esto sino realidad. Y creo que con solo leer detenidamente lo que dice el standard cualquier persona normal tiene que darse cuenta que NULL tiene que tener como valor 0.

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.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #68 en: Martes 5 de Diciembre de 2006, 23:37 »
0
*******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 #69 en: Martes 5 de Diciembre de 2006, 23:38 »
0
Cita de: "su -"
Bueno...
http://c-faq.com/null/nullor0.html
 :rolleyes:
Eso no explica nada sobre que debe ser NULL segun el standard, solo dice como esta creo que bien aclarado, que NULL puede ser incluso (no en C++ pero si en C) ((void *)0). Ahi vemos un ejemplo claro de correcto uso del standard ya que el valor de NULL es 0.

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 #70 en: Martes 5 de Diciembre de 2006, 23:42 »
0
no.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #71 en: Martes 5 de Diciembre de 2006, 23:48 »
0
17.10:
Citar
Programming style, like writing style, is somewhat of an art and cannot be codified by inflexible rules, although discussions about style often seem to center exclusively around such rules.
Ademas no creo que se puede poner un estandar ya que NULL se puede usar como un numeral y no como un numero... eso creo no se.
*******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 #72 en: Martes 5 de Diciembre de 2006, 23:51 »
0
Cita de: "su -"
17.10:
Citar
Programming style, like writing style, is somewhat of an art and cannot be codified by inflexible rules, although discussions about style often seem to center exclusively around such rules.
Ademas no creo que se puede poner un estandar ya que NULL se puede usar como un numeral y no como un numero... eso creo no se.
El estilo de programacion no tiene NADA que ver con el standard. Y no importa que no lo creas realmente, no tenes que creer nada, tenes que leer lo que dice el standard y punto, haciendolo sabras que condiciones tiene que cumplir un compilador para ser justamente 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.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Diferenciaa
« Respuesta #73 en: Martes 5 de Diciembre de 2006, 23:52 »
0
Cuando se discuten estilos de programacion suele ser de cosas como estas:

Código: Text
  1.  
  2. if (x)
  3.   hacer();
  4.  
  5. if (x) { hacer(); }
  6.  
  7. if (x)
  8. {
  9.   hacer();
  10. }
  11.  
  12.  

O cantidad de tabs, nombres de variables, clases, etc.

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.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Diferenciaa
« Respuesta #74 en: Miércoles 6 de Diciembre de 2006, 00:09 »
0
Bueno, quien soy yo para hablar de esto, esta claro que si dice asi (el compilador/interpretado...) asi debera ser, justifica las limitaciones y ciertamente las tendras...
En fin NULL es 0  :P
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.