Maison > développement back-end > C++ > Pourquoi C# autorise-t-il « short = short » mais pas « short = short short » ?

Pourquoi C# autorise-t-il « short = short » mais pas « short = short short » ?

DDD
Libérer: 2025-01-23 08:42:16
original
692 Les gens l'ont consulté

Why Does C# Allow `short  = short` But Not `short = short   short`?

Arithmétique des entiers courts C# : comprendre = vs. =

C# présente un comportement apparemment contradictoire lors de l'ajout de short entiers. L'affectation directe (short = short short) échoue à la compilation, tandis que l'affectation composée (short = short) réussit. Cet article clarifie ce comportement.

Pourquoi short short Résultats dans int

La somme de deux short entiers est implicitement promue en int. Ce choix de conception évite d’éventuelles erreurs de débordement. Un débordement se produit lorsque le résultat d'une opération arithmétique dépasse la valeur maximale représentable par le type de données.

Considérez cet exemple :

<code class="language-csharp">short[] prices = { 10000, 15000, 11000 };
short average = (prices[0] + prices[1] + prices[2]) / 3; // Compile-time error</code>
Copier après la connexion

Sans promotion implicite vers int, l'ajout déborderait, conduisant à un average inexact.

Le = Casting implicite de l'opérateur

L'opérateur = diffère de l'affectation directe. La spécification du langage C# impose que les opérateurs d'affectation composés effectuent une conversion implicite vers le type de l'opérande de gauche.

Pour a = b, où a et b sont short, le compilateur traduit effectivement cela par :

<code class="language-csharp">a = (short)(a + b);</code>
Copier après la connexion

Cette conversion implicite gère les débordements potentiels en tronquant le résultat int en un short. A noter que cette troncature peut entraîner une perte de données si la somme dépasse la short plage.

En résumé

L'ajout de deux valeurs short donne un int pour éviter le débordement. Le cast implicite de l'opérateur = permet un code concis tout en atténuant, mais sans éliminer, le risque de perte de données due à un débordement potentiel pendant l'opération. Cela offre une flexibilité, permettant des calculs qui autrement entraîneraient des erreurs de compilation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal