Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Führt Multiplikationen durch, die überlaufen, was eine 32-Bit-Ganzzahl enthalten kann.
Syntax
__int64 __emul(
int a,
int b
);
unsigned __int64 __emulu(
unsigned int a,
unsigned int b
);
Parameter
a
[in] Der erste ganzzahlige Operand der Multiplikation.
b
[in] Der zweite ganzzahlige Operand der Multiplikation.
Rückgabewert
Das Ergebnis der Multiplikation.
Anforderungen
Intrinsic | Aufbau |
---|---|
__emul |
x86, x64 |
__emulu |
x86, x64 |
Headerdatei<intrin.h>
Hinweise
__emul
verwendet zwei 32-Bit-signierte Werte und gibt das Ergebnis der Multiplikation als 64-Bit-Ganzzahlwert zurück.
__emulu
verwendet zwei ganzzahlige 32-Bit-Werte ohne Vorzeichen und gibt das Ergebnis der Multiplikation als 64-Bit-Ganzzahlwert zurück.
Beispiel
// emul.cpp
// compile with: /EHsc
// processor: x86, x64
#include <iostream>
#include <intrin.h>
using namespace std;
#pragma intrinsic(__emul)
#pragma intrinsic(__emulu)
int main()
{
int a = -268435456;
int b = 2;
__int64 result = __emul(a, b);
cout << a << " * " << b << " = " << result << endl;
unsigned int ua = 0xFFFFFFFF; // Dec value: 4294967295
unsigned int ub = 0xF000000; // Dec value: 251658240
unsigned __int64 uresult = __emulu(ua, ub);
cout << ua << " * " << ub << " = " << uresult << endl;
}
Output
-268435456 * 2 = -536870912
4294967295 * 251658240 = 1080863910317260800
Ende Microsoft-spezifisch