Maison > développement back-end > C++ > Pourquoi « short = short » fonctionne-t-il alors que « short = short short » ne fonctionne pas en C# ?

Pourquoi « short = short » fonctionne-t-il alors que « short = short short » ne fonctionne pas en C# ?

Susan Sarandon
Libérer: 2025-01-23 08:46:14
original
283 Les gens l'ont consulté

Why Does `short  = short` Work While `short = short   short` Doesn't in C#?

La raison pour laquelle short = short fonctionne mais short = short short ne fonctionne pas en C#

En programmation, la gestion des types de données est cruciale. En C#, un piège courant lorsqu'on traite des entiers courts est que l'opérateur = se comporte différemment que prévu sur les variables entières courtes. Approfondissons cette question.

Le problème

Considérez le code C# suivant :

short a, b;
a = 10;
b = 10;
a = a + b; // 错误:无法隐式转换类型“int”为“short”。

// 我们也可以使用算术赋值运算符编写此代码,如下所示

a += b; // 但此代码可以成功运行,为什么?

Console.Write(a);
Copier après la connexion

Dans la première ligne, attribuer a b à la variable short a provoquera une erreur. En effet, la somme de deux courts métrages est un int et ne peut pas être implicitement convertie en short. Cependant, l'utilisation de = sur la deuxième ligne est compilée avec succès. Pourquoi est-ce ?

Comprendre l'arithmétique des nombres entiers

La réponse réside dans la façon dont fonctionne l’arithmétique des nombres entiers en C#. Le résultat de l'addition d'entiers est int, quel que soit le type de données des opérandes. Cela évite le risque de débordement d'entier, qui pourrait survenir si le résultat de short short est short.

=Opérateur

L'opérateur

= est un raccourci pour a = a b. Selon la spécification C#, si le type de retour d'un opérateur est implicitement convertible en type de x (dans ce cas, short), alors l'opération est évaluée à x = (T)(x op y), où T est le type de x .

Pour a = b, le compilateur insère les conversions nécessaires pour convertir le résultat de a b (c'est-à-dire int) en short. Cela permet à l’affectation composée de fonctionner comme prévu.

Conclusion

Bien que le comportement de la sommation d'entiers en C# puisse prêter à confusion au début, il est essentiel de comprendre les règles sous-jacentes de l'arithmétique et des opérateurs d'affectation pour éviter un comportement inattendu et écrire du code robuste. En gérant soigneusement les types de données et en utilisant correctement l'opérateur =, les développeurs peuvent garantir que leurs programmes se comportent comme prévu.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal