Bonjour
dans ce sens ça ne pose pas de problème 1 en 32 bits ou en 64 bits c'est 1.
Par exemple
Int32 toto = 1234567890;
test(toto);
private void test(Int64 valeur)
{
Int64 v2 = valeur * 2;
}
Si je mets un point d'arrêt dans test, valeur vaut bien 1234567890 (la conversion est implicite donc pas d'erreur), et v2 se calcule.
Par contre dans l'autre sens, il n'y a pas de conversion implicite car un int64 peut être trop grand pour rentrer tout seul dans un int32.
Int64 toto = Int32.MaxValue;
toto += 10;
test(toto);//cette ligne est soulignée car ça ne veut pas précompiler
private void test(Int32 valeur)
{
Int64 v2 = valeur * 2;
}
Par contre si je caste en int32, ça compile mais le résultat est faux:
Int64 toto = Int32.MaxValue;
toto += 10;
test((Int32)toto);
}
private void test(Int32 valeur)
{
Int64 v2 = valeur * 2;
}
toto 2147483657 long
valeur -2147483639 int