UTNianos

Versión completa: Animaladas de código
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
(30-08-2012 22:00)gonnza escribió: [ -> ]
(17-08-2012 12:34)Jarry escribió: [ -> ]no es una animalada, es mas bien una perlita que me encontre por ahi:


$formWidth -= 0;




using System;

class Program
{
static void Main()
{
int x = 0;
x = x++;
Console.WriteLine(x);
}
}



no compila nunca
bu
encontre un bug (?)

Que codigo extraño, claramente una animalada. Bastante impredecible que iba a dar ese resultado.

Cual es el bug?
(30-08-2012 22:00)gonnza escribió: [ -> ]
(17-08-2012 12:34)Jarry escribió: [ -> ]no es una animalada, es mas bien una perlita que me encontre por ahi:


$formWidth -= 0;




using System;

class Program
{
static void Main()
{
int x = 0;
x = x++;
Console.WriteLine(x);
}
}



no compila nunca
bu
encontre un bug (?)

en una de las charlas de operativos habíamos visto algo acerca de x = x++;...no recuerdo bien lo que se hablaba, era como que el compilador no entendía bien qué tenía que hacer primero y explotaba todo, algo así. Igual para ese entonces ya tenía el bocho quemado
Cita:Cual es el bug?

no, es q cuando lo escribi, no me compilaba
me tiraba "el archivo todavia se esta compilando. Intente mas tarde"
o algo asi
y tiraba f5, esperaba, compilaba y me salia lo mismo

ahora anda

Off-topic:
Cita:era como que el compilador no entendía bien qué tenía que hacer primero y explotaba todo, algo así. Igual para ese entonces ya tenía el bocho quemado

teniendo en cuenta que los operadores tienen una precedencia, seria raro que no sepa que hacer. Debe ser algo mas

using System;

class Program
{
static void Main()
{
int x = 0;
x = ++x;
Console.WriteLine(x);
}
}


posteo para probar nomas =P
precedencia,primero lee la variable, despues usa el operador, como tiene el igual antes, primero asigna y despues askfhskjdfhkjdsfghskdhgksdhgksdhfg plaf.,... me ha pasado alguna vez
x++ es un post-incremento gente
primero ejecuta la sentencia y despues incrementa

para que x valga 1 deberia ser x = ++x;
(30-08-2012 23:33)Jarry escribió: [ -> ]x++ es un post-incremento gente
primero ejecuta la sentencia y despues incrementa

para que x valga 1 deberia ser x = ++x;

ahi jarry lo explico sin mi "skljdfhkjsdhfkjsdhfkjsdh plaf", pero es lo mismo que quise poner yo JAJAJAJAJA

(si se fijan mi codigo esta con precedencia =) )
no


porque en c#

el post incremento re asigna automaticamente

hacer x++;
equivale a x += 1

entonces, si primero asigna, y luego ejecuta el incremento, el operador mismo ++ deberia auto-asignarlo

ejemplo





using System;

class Program
{
static void Main()
{
int x = 0;
Console.WriteLine(x);
x++;
Console.WriteLine(x);
}
}

Igual no deberia dar 0 (pero aca en *nix no tengo el visual studio como para comprobarlo).
No se supone que antes de la sentencia que muestra el resultado por pantalla el valor de x ya vale 1?
O sea


x = x++


Asigna a x el valor original de x (cero) y despues (antes de la sentencia que sigue) incrementa la variable x (que vale cero) y pasa a valer 1.

Incluso si fuera como decis vos Gonza, no deberia dar ese output.


using System;

class Program
{
static void Main()
{
int x = 0;
int y = 0;
x = y++;
Console.WriteLine(x);
Console.WriteLine(y);
}
}

(31-08-2012 00:56)rulo escribió: [ -> ]Igual no deberia dar 0 (pero aca en *nix no tengo el visual studio como para comprobarlo).
No se supone que antes de la sentencia que muestra el resultado por pantalla el valor de x ya vale 1?
O sea


x = x++


Asigna a x el valor original de x (cero) y despues (antes de la sentencia que sigue) incrementa la variable x (que vale cero) y pasa a valer 1.

Incluso si fuera como decis vos Gonza, no deberia dar ese output.

Si, deberia dar uno para mi.
Parece que es un error tipico de los compiladores. Habria que probar en otros.
sobre c++ en Visual2005




#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int x = 0 ;
x = x++;
printf("X %d",x);
return 0;
}




funca bien

c ++ plano sobre el foro... veremos...



#include <stdio.h>

int main()
{
int x = 0 ;
x = x++;
printf("X %d",x);
return 0;
}


tamnbien funca... habia que ver quien tiene un monodevelop por aca, para ver si en mono hace lo mismo...
sigue sin sonarme a bug, me suena a que esta hecho adrede, por alguna razon inteligente que no sabemos cual es ...

(no es chiste)
una perlita que me pasaron por mail de un proyecto de acá


[Imagen: 23saj5c.png]
Yo recuerdo que en un proyecto habia visto algo asi:


if (variable == true) {
return true;
} else {
return false;
}


using System;

class program
{
static void Main()
{
string x = new string(new char[0]);
string y = new string(new char[0]);
Console.WriteLine(object.ReferenceEquals(x, y));
}
}


es interesante estas cosas que uno encuentra googleando
Que googleaste...bugs para un compilador? Lindo hobby tenés, puto.
Eso te pasa por programar en C#. Trollface
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
URLs de referencia