La fusione è un processo in cui un tipo di oggetto viene esplicitamente convertito in un altro tipo se la conversione è consentita. Questo processo potrebbe comportare una modifica del valore.
Quando si tratta di costruttori, l'aggiunta della parola chiave explicitimpedisce a un compilatore entusiasta di creare un oggetto quando non era la prima intenzione del programmatore. Tale meccanismo è disponibile anche per gli operatori di casting? struct Foo { operator std::string() const; }; Qui, ad esempio, mi piacerebbe poter eseguire …
Mi chiedo se qualcuno possa dirmi come funziona il casting? Capisco quando dovrei farlo, ma non proprio come funziona. Sui tipi di dati primitivi capisco parzialmente ma quando si tratta di trasmettere oggetti non capisco come funziona. Come può un oggetto con il tipo Object essere lanciato improvvisamente, diciamo, MyType(solo …
Sto leggendo un libro ( Programmazione con thread POSIX di Butenhof, 1997) che utilizza C, e mi sono imbattuto nella seguente riga: (void)free(data); Qui, dataè solo un puntatore a una struttura allocata, data = malloc(sizeof(my_struct_t)); Perché il risultato del freecast void? Dalla mia comprensione di C, questo non sembra avere …
Se provo a trasmettere a Stringa java.util.Date, il compilatore Java rileva l'errore. Quindi perché il compilatore non contrassegna quanto segue come errore? List<String> strList = new ArrayList<>(); Date d = (Date) strList; Ovviamente, la JVM lancia un ClassCastExceptionruntime, ma il compilatore non lo contrassegna. Il comportamento è lo stesso con …
Ho letto vari post su Stack Overflow RE: l'errore del puntatore tipo-derefercing puntato. La mia comprensione è che l'errore è essenzialmente l'avvertimento del compilatore del pericolo di accedere a un oggetto attraverso un puntatore di tipo diverso (sebbene un'eccezione sembri essere fatta per char*), che è un avvertimento comprensibile e …
In questa risposta , zwol ha affermato: Il modo corretto di convertire due byte di dati da una fonte esterna in un intero con segno a 16 bit è con funzioni di supporto come questa: #include <stdint.h> int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0]) << 8) | …
Quali sono le regole C ++ che significa che uguale è falso ? Dato: float f {-1.0}; bool equal = (static_cast<unsigned>(f) == static_cast<unsigned>(-1.0)); Ad esempio https://godbolt.org/z/fcmx2P #include <iostream> int main() { float f {-1.0}; const float cf {-1.0}; std::cout << std::hex; std::cout << " f" << "=" << static_cast<unsigned>(f) << …
Problema Considera il seguente problema di progettazione in Haskell. Ho un semplice EDSL simbolico in cui voglio esprimere variabili ed espressioni generali (polinomi multivariati) come x^2 * y + 2*z + 1. Inoltre, voglio esprimere alcune equazioni simboliche sulle espressioni, per esempio x^2 + 1 = 1, così come le …
Sto rintracciando un errore nel codice di terze parti e l'ho ridotto a qualcosa lungo le righe di. use libc::c_void; pub unsafe fn foo() {} fn main() { let ptr = &foo as *const _ as *const c_void; println!("{:x}", ptr as usize); } Funzionato su stabile 1.38.0 questo stampa il …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.