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);
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
=
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!