Me parece que no puede deshacerse de esta advertencia para la siguiente línea de código:Cómo para suprimir C CS0675 # advertencia: bit a bit-u operador utilizado en un operando de sesión extendida
d.word[wrdIndex++] = d.GetWord(english) | (ulong)i;
la advertencia se aplica a el código después del operador de asignación. el método GetWord devuelve un ulong. Intenté lo siguiente en vano:
d.word[wrdIndex++] = (d.GetWord(english) | (ulong)i);
d.word[wrdIndex++] = d.GetWord(english) | ((ulong)i);
d.word[wrdIndex++] = ((ulong)d.GetWord(english)) | ((ulong)i);
¿Alguien tiene alguna idea?
El código ciertamente hace lo que debería (y esta es la forma correcta de hacer lo que quiero en este caso, creo) - Estoy sorprendido de que el 2 de los 3 intentos: d.GetWord (inglés) | ((ulong) i) todavía entrega la advertencia cuando el ((ulong) i) se lanza a un ulong antes de que se aplique el operador O bit a bit, ¿verdad? –
Ah, ahora lo entiendo, es bastante inteligente del compilador para advertirme sobre esto, supongo. ¿Hay alguna forma de convertir a ulong sin extensión de signo (que no sea enmascarando el bit superior manualmente)? –
lanzados para unir primero. '(ulong) (uint) i' – CodesInChaos