Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - geeke

#1
 Este hilo lo creo a modo de aclaracion en referencia a otro hilo donde se discutio el mismo tema, en el cual el moderador de turno brindo información no del todo acertada, luego de manera arbitraria procedio a bloquear el hilo sin razon alguna. Lo cual me parecio injusto, ya que cerro la posibilidad de que otro usuario pueda opinar al respecto.

 En lo referente al tema, C++ dispone de una lista de excepciones establecidas que son lanzadas por throw producto de algun error, hay que dejar en claro que try/catch solo puede capturar excepciones lanzadas por throw, por tanto obviamente un segfault, division por cero no son inherentes al C++ estandar, es una situacion que se produce de manera inesperada a nivel hardware, por lo tanto ya es dependiente de cada OS y compilador la manera controlarlos.

Mas info: http://stackoverflow.com/questions/1823721/how-to-catch-the-null-pointer-exception

Otra cosa es usar alguna extension del compilador para interpretar un segfault como una excepcion de C++ estandar (lo cual no es nada portable) como es el caso de Visual C++:

CitarException Handling Model

You can set an exception handling model for your Visual C++ compiler with /EHs (or EHsc) to specify synchronous exception handling model, or /EHa to specify asynchronous exception handling model. The asynchronous model can be used to force the try{}catch(){} construction to catch both SEH and C++ typed exceptions (the same effect can be achieved with the _set_se_translator() function). If a synchronous model is utilized, SEH exceptions are not caught by the try{}catch(){} construction. Asynchronous model was the default in previous versions of Visual C++, but the synchronous one is the default in the newer versions.

Mas info: http://www.codeproject.com/Articles/207464/Exception-Handling-in-Visual-Cplusplus

https://msdn.microsoft.com/en-us/library/1deeycx5(v=vs.80).aspx

 




#2
Me he encontrado un codigo en C++ muy extraño, el cual imprime una determinada contidad de numeros uno debajo de otro, hasta ahi todo normal pero lo hace sin usar ningun tipo de bucles ni recursión.

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

template<int N>
class PrintOneToN
{
public:
   static void print()
   {
       PrintOneToN<N-1>::print();  // Note that this is not recursion
       cout << N << endl;
   }
};

template<>
class PrintOneToN<1>
{
public:
   static void print()
   {
       cout << 1 << endl;
   }
};
int main()
{
   const int N = 100;
   PrintOneToN<N>::print();
   return 0;
}


Alguien entiendo como funciona este codigo?. Si es asi podria explicarme porfavor ..
#3
Bueno me surgió esta duda hoy al regresar del trabajo, la cuestión seria si un auto viaja a 100 km/h. en el interior hay una mosca suspendida por el aire, no se encuentra sujeta a ninguna parte.

Mi pregunta es: ¿por qué la mosca se mantiene firme en el aire, estando el auto en movimiento? ¿cual es la explicación para esto?. digo esto por experiencia propia, yo iba a alta velocidad y el insecto se desplazaba tranquilamente por el auto.

Saludos

#4
Buenas comunidad

Hoy quiero compartirles una serie la cual me dejo muy enganchado y creo que a muchos de aquí también le gustara. la serie se llama Mr. Robot

Trailer

[youtube=640,360]https://www.youtube.com/watch?v=Ug4fRXGyIak[/youtube]

Primer capitulo

http://www.seriesbang.net/mr-robot-1x01.html

Espero lo disfruten, yo estoy a la espera de los próximos capitulos

Saludos
#5
 Seguramente ya han escuchado esto varias veces, por lo que quisiera oír sus puntos de vista al respecto.

A veces da la sensación de que es mejor no saber para ser felices (ojos que no ven, corazón que no siente, ¿no?) y de que saber demasiadas cosas nos condena a una vida de desgracia y desencanto continuo. Hay gente que incluso evita no saber cosas que le puedan desagradar para no caer en ansiedad o depresión.

Es por eso que teniendo en cuenta este pensamiento me hago la siguiente pregunta ¿es la inteligencia sinónimo de tristeza? lo digo porque la gente más inteligente se preocupa más por la condición humana o se angustia con la estupidez de los demás, osea vive constantemente preocupado.

Que piensan de esto?
#6
Hola a todos, tengo un inconveniente a la hora de intentar entender el siguiente código

#include <stdio.h>

typedef union
{
    int entero;
    struct
    {
        unsigned short : 7;
        unsigned short valor: 1;
    } bin;
} conversor;

int main(void)
{
    int numero = 8, i;
    conversor conver;
    conver.entero = numero;

    for ( i = 0; i < 8; i++ )
    {
        printf( "%d", conver.bin.valor );
        conver.entero <<= 1;
    }
    printf( "\n" );

    return 0;
}


Seria alguien tan amable de explicarme como convierte este código un numero entero a binario y también que hace cada miembro de la unión por ejemplo

unsigned short : 7;

Para que sirve esto?
#7
He encontrado una función algo peculiar la cual calcula el cuadrado de un determinado numero, hasta ahi todo bien pero lo que me llama la atención es el metodo utilizado para llegar a ello.

#include <stdio.h>

int p(int n)
{
    int a[n];
    return (&a)[n] - a;
}

int main(void)
{
    printf("%d\n", p(8));
    return 0;
}


Como se daran cuenta a simple vista uno no supondría que esto saca el cuadrado de un numero es algo confuso y pido que alguien me explique detalladamente como funciona esto

#8
Buenas, no estoy seguro si esto ya es conocido o no pero jugando con una implementación de strcmp descubrí que con solo comparar la dirección de inicio de dos cadenas se podía saber si eran iguales o no

Código (cpp) [Seleccionar]
#include <stdio.h>

int strcmp1(char *s, char *t)
{
    /*for(; *s==*t; s++, t++)
    {
        printf("s = %p, s = %c\n", s, *s);
        printf("t = %p, t = %c\n", t, *t);

        if(*s=='\0')
            return 0;
    }*/
    return s - t;
}

int main(void)
{
    if(strcmp1("hola", "hola") == 0)
        puts("Igual");
    else
        puts("Desigual");

    return 0;
}


Según veo con el depurador las direcciones de las cadenas son iguales sin ambas son iguales caso contrario son diferentes. Siendo sincero no entiendo porque pasa esto dos cadenas diferentes no deberían ocupar la misma dirección al mismo tiempo  :huh: ¿Alguien puede explicar que ocurre aquí?
#9
Navegando por internet me encontré un programa el cual no entiendo porque compila en mi caso en CodeBlock, como verán se define una función dentro de otra según tenia entendido esto es ilegal en C por lo cual esto me extraña mucho:

#include <stdio.h>

long fib(long x)
{
    long fib_i(long n)
    {
        return n < 2 ? n : fib_i(n - 2) + fib_i(n - 1);
    };
    if (x < 0)
    {
        printf("Bad argument: fib(%ld)\n", x);
        return -1;
    }
    return fib_i(x);
}

long fib_i(long n)
{
    printf("This is not the fib you are looking for\n");
    return -1;
}

int main()
{
    long x;
    for (x = -1; x < 4; x ++)
        printf("fib %ld = %ld\n", x, fib(x));

    printf("calling fib_i from outside fib:\n");
    fib_i(3);

    return 0;
}


Alguien puede explicar porque funciona esto y como funciona  :huh:
#10
Esto es solo por curiosidad me preguntaba si existe una manera diferente que la convencional:

Código (cpp) [Seleccionar]
int n = sizeof(arr) / sizeof(arr[0]);

Para obtener el tamaño de un array de enteros he buscado mucho por internet pero nada al parecer es el único método existente.

Saludos ;D
#11
Buenas, soy nuevo en el foro y tengo dos dudas puntuales primero que nada si pueden darme la definición de:

¿Que es aliasing en c?
¿Que significa aliasing estricto en c?

Y si no es molestia ejemplos de situaciones en donde se nos puede presentar