lang:c:cast
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| lang:c:cast [2020/03/03 21:03] – Création root | lang:c:cast [2025/07/28 11:02] (Version actuelle) – [Cast explicite lors de la déclaration] : ajout du postfix ZU root | ||
|---|---|---|---|
| Ligne 6: | Ligne 6: | ||
| </ | </ | ||
| - | ===Cast explicite=== | + | ===Cast explicite |
| - | + | Définir | |
| - | Ici, un cast explicite est nécessaire si '' | + | <code c> |
| + | unsigned int i = 0xFFFFFFFFU; | ||
| + | size_t s = 123ZU; | ||
| + | </ | ||
| + | Définir un nombre 64 bits : | ||
| <code c> | <code c> | ||
| - | double d = 0.1; | + | unsigned long i = 0xFFFFFFFFFFFFFFFFLU; |
| - | float f = (float)d; | + | |
| </ | </ | ||
| - | Un cast se fait tout simplement en ajoutant les parenthèses. | + | Définir un nom flottant (et par un double) |
| - | + | ||
| - | ===Gérer les dépassements de limites=== | + | |
| <code c> | <code c> | ||
| - | int k = 0x7fffffff; | + | float f = 0.1f; |
| - | k += 150; | + | |
| </ | </ | ||
| - | Si on compile le programme avec '' | + | ===Cast explicite lors de la conversion (C uniquement)=== |
| - | Il n'est pas possible de gérer ces dépassements par un cast. Il est nécessaire | + | Ici, un cast explicite |
| <code c> | <code c> | ||
| - | int k = 0x7fffffff; | + | double d = 0.1; |
| - | k = (int)(k + 150); | + | float f = (float)d; |
| </ | </ | ||
| - | ===Réajuster | + | Un cast se fait tout simplement en ajoutant entre parenthèses le type de destination. |
| + | |||
| + | Il peut être aussi nécessaire de réajuster | ||
| <code c> | <code c> | ||
| const char * t = " | const char * t = " | ||
| - | void f(char * tt) | + | void f(unsigned |
| { | { | ||
| } | } | ||
| Ligne 44: | Ligne 45: | ||
| int main() | int main() | ||
| { | { | ||
| - | f((char *)t); | + | f((unsigned |
| }</ | }</ | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Enlever le '' | ||
| + | </ | ||
| + | |||
| + | ===Gérer les dépassements de limites=== | ||
| + | |||
| + | <code c> | ||
| + | int k = 0x7fffffff; | ||
| + | k += 150; | ||
| + | </ | ||
| + | |||
| + | Si on compile le programme avec '' | ||
| + | |||
| + | Il n'est pas possible de gérer ces dépassements par un cast. Il est nécessaire d' | ||
| + | |||
| + | <code c> | ||
| + | int main() { | ||
| + | int k = 0x7fffffff; | ||
| + | // true car overflow | ||
| + | return __builtin_add_overflow(k, | ||
| + | } | ||
| + | </ | ||
lang/c/cast.1583265817.txt.gz · Dernière modification : de root
