Articles of casting

C: ¿Cuándo está lanzando entre los tipos de puntero un comportamiento no indefinido?

Como recién llegado a C, estoy confundido acerca de cuándo lanzar un puntero está realmente bien. Según tengo entendido, puedes convertir cualquier tipo de puntero a cualquier otro tipo, y el comstackdor te permitirá hacerlo. Por ejemplo: int a = 5; int* intPtr = &a; char* charPtr = (char*) intPtr; Sin embargo, en general esto […]

Cómo lanzar un entero para anular el puntero?

Mientras trabajo con Threads en C, estoy frente a la advertencia “advertencia: lanzar al puntero desde un número entero de diferente tamaño” El código es el siguiente #include #include #include #include void *print(void *id) { int a=10; printf(“My thread id is %ld\n”,pthread_self()); printf(“Thread %d is executing\n”,id); return (void *) 42; } int main() { pthread_t […]

¿Por qué debería evitarse el lanzamiento?

En general, evito los tipos de conversión tanto como sea posible ya que tengo la impresión de que es una práctica de encoding deficiente y puede incurrir en una penalización de rendimiento. Pero si alguien me pide que explique por qué exactamente es así, probablemente los mire como un venado en los faros. Entonces, ¿por […]

¿Cómo convierto de int a Long en Java?

Sigo encontrando tanto aquí como a personas de Google que tienen problemas pasando de long a int y no al revés. Sin embargo, estoy seguro de que no soy el único que se ha topado con este escenario antes de pasar de int a Long . Las únicas otras respuestas que encontré fueron “Simplemente configúralo […]

¿Lanzar al tipo genérico en Java no aumenta ClassCastException?

Me encontré con un comportamiento extraño de Java que parece un error. ¿Lo es? Lanzar un Objeto a un tipo genérico (por ejemplo, K ) no arroja una ClassCastException incluso si el objeto no es una instancia de K Aquí hay un ejemplo: import java.util.*; public final class Test { private static void addToMap(Map map, […]

¿Por qué no reinterpretar_cast Force copy_n para Cast entre tipos del mismo tamaño?

De acuerdo con cppreference.com , reinterpret_cast : Convierte entre tipos reinterpretando el patrón de bits subyacente. Pero espera, eso es mentira porque solo funciona en estos casos: Cuando un puntero o referencia al objeto de tipo T1 es reinterpret_cast (o molde de estilo C) a un puntero o referencia a un objeto de un tipo […]

¿Puedo convertir una clase derivada a una clase base privada, usando un molde C-style?

¿Puedo hacer esto? class A { … }; class B : private A { const A &foo() const { return *((const A *)this); } }; ¿Puedo tomar una subclase que hereda de forma privada de una clase base y convertirla a una versión pública de su clase base? ¿Puedo hacer esto sin tener métodos virtuales? […]

Genéricos: casting y tipos de valores, ¿por qué es esto ilegal?

¿Por qué es esto un error de tiempo de comstackción? public TCastTo CastMe(TSource i) { return (TCastTo)i; } Error: tipo de conversión de anotación ‘TSource’ a ‘TCastTo’ ¿Y por qué es esto un error de tiempo de ejecución? public TCastTo CastMe(TSource i) { return (TCastTo)(object)i; } int a = 4; long b = CastMe(a); // […]

Diferencia en el comportamiento al usar dynamic_cast con referencia y punteros

Estaba comprobando el comportamiento de dynamic_cast y descubrí que cuando falla, la excepción std :: bad_cast se lanza solo si el destino es un tipo de referencia. Si el destino es un tipo de puntero, entonces no se lanza ninguna excepción del elenco. Este es mi código de muestra: class A { public: virtual ~A() […]

Lanzar LinkedHashMap al objeto complejo

Tengo una aplicación que almacena algunos datos en DynamoDB utilizando Jackson para ordenar mi objeto complejo en un JSON. Por ejemplo, el objeto que estoy coordinando podría verse así: private String aString; private List someObjectList; Donde SomeObject podría tener este aspecto: private int anInteger; private SomeOtherObject; y SomeOtherObject podría verse así: private long aLong; private […]