Yo se que en ese momento estaba teniendo un error, en mi codigo C++, y de hecho no era un tema de compración era un tema de asignación, hacia algo asi
unsigned int variable = objeto.row - 1; cuando objeto.row era 0, todo eso me evaluaba a -1 y asignado a una variable unsigned int se transformaba a 2 a la 31 o algo similar, el tema a tratar no es ese y no lo veo encontra que un lenguaje tenga tipos signed y unsigned e smas me parece bien, pero como te dije anteriormente hay que saberlos usar sino es lo mismo que nada y se hacenval mas cagadas... A lo que voy es que si vos queres que al querer setear un valor negativo en un atributo que necesites que sea positivo le de un valor por efault, eso si no tenes un setter no lo podes hacer de forma repetitiva.... En C++ tendrias que hacer algo asi en todos los casos: (valor < 0)?atributo = 0:atributo = valor; Y estarias repitiendo codigo constantemente, queres cambiar el valor por defecto que toma la variable en un caso asi y estarias buscando por cada asignación de ese tipo en cada clase y metodo para cambiar el valor que le asigna cuando solo tendrias que modificar un setter, sea privado protegido o publico, depende de la visibilidad que le quieras dar, pero es un setter al fin. Si yo quiero representar a un contador como un atributo no tendria sentido que mi contador se inicie en un valor negativo (dependiendo de cada caso en particular, pero en general no tendria sentido) y si seria razonable que se inicialize en cero, si el valor es negativo, y en el valor pasado en caso de que sea contrario, y sin embargo eso no es un "error excepcional" sino que es algo que podemos manejar nosotros, tomando la debida accion en caso de ocurrirse. 2008/4/24, Ricardo Markiewicz <[EMAIL PROTECTED]>: > > 2008/4/24 Pablo Martín Viva <[EMAIL PROTECTED]>: > > Si, bueno java no tiene tipos unsigned pero usar el tipo unsigned tiene > > muchos problemitas > > BWFT ? ... No veo el problema :) > > > si no los sabes usar y eso no te valida que el numero que > > Bueno, yo estoy excluyendo a los programadores nabos de la ecuacion, > si no, no tiene sentido hablar de nada. > si queres programar bien, necesitas 2 dedos de frente. > > > le pases como parametro a tu metodo o le asignes a tu atributo lo > ignore. > > uint a; , dale, no es tan terrible :) ... y no, no ignora nada!, si le > pasas -2, interpreta lo interpretara como un numero super grande, pero > no lo va a ignorar. Y de ultima, siempre tedrias que tener un warning > en algun lado que te avisa. > > > Toma por ejemplo C++ que SI tiene unsigned int y hace poco en un trabajo > > practico de la facultad tuve un problema similar.... > > Pasale -Wall al compilador y te avisa : Warning, comparassion beetwen > signed and unsinged (o aaaalgo asi :P), no es grave, despues de todo > sos el programador, hacete cargo :) > > > Estaba usando una variable unsigned int y le asugnava una variable que > tenia > > 0 y le restaba uno (Sin darme cuenta que la variable estaba en 0 antes > de > > restarle 1) y por ende, la variable no pasba a tener -1 sino 2 elevado a > la > > 37 o algo similar que no es lo que yo queria.... > > Bueno, ahi tu problema era otro, no unsinged int. > > > Esta bien ese es un bug mio, y un error conceptual mio, pero tener un > tipo > > de dato unsigned no hace que no te deje meter un valor negativo sino que > te > > acepte un valor negativo pero lo interpreta como positivo, que hay una > gran > > No hay ningun error conceptual, esta bien hacer 0-1 = 2^32-1 ... es > totalmetne razonable y natural en las PCs. Ahora, si nunca leiste > minimamente como funciona una computadora, dificil que lo veas como > natural :). > > El error yo lo veo mas por el lado del problema. Vos estabas restando, > teniendo una condicion limite y no la verificabas, esperando que el > lenguaje magicamente lo haga por vos. 0-1 = 0 ?, eso si no tendria > sentido :) > > > diferencia, los tipos de datos se usan para interpretar un dato, los > > conjuntos de bits pueden ser iguales pero representados en distintos > > En bajo nivel quizas, pasa eso, por cuestiones mas alla de la logica > tal vez :). En lenguajes de alto nivel, no compilara, si lo hara, > dependera del lenguaje / implementacion. Lo importante es que el > unsigned int no tiene nada de malo :), a lo sumo el lenguaje lo tiene. > > > formatos se interpretan diferente, el tema que propuse yo con un getter > / > > setter y el valor negativo no es cuestion de definir la variable como > > unsigned int, sino validar que si me llega un valor negativo, ignorarlo. > > Ignorar es a veces peor que aceptar un error. Una ingore es mas > dificil de debbugear, que saber donde explota una aplicacion y tener > un punto de partida. > > -- > > -- > ¡Falta Uno! - http://www.falta-uno.com.ar/ > Ricardo Markiewicz > > _______________________________________________ > Lista de correo Programacion. > [email protected] > http://listas.fi.uba.ar/mailman/listinfo/programacion > -- Si yo tengo una manzana y tú tienes una manzana, luego de intercambiarlas ambos tenemos una manzana. Si yo tengo una idea y tú tienes una idea, luego de intercambiarlas ambos tenemos dos ideas. Apoyando a la comunidad Open Source. Facebook prifile: http://www.facebook.com/profile.php?id=1244601012 Orkut prifile: http://www.orkut.com/Profile.aspx?uid=12594853021246287134
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
