Elapsed Time Counter
-
Hi,
Ich habe den folgenden code :
LARGE_INTEGER t0,t1; LONGLONG t; QueryPerformanceCounter(&t0); function(); //irgendwelche funktion QueryPerformanceCounter(&t1); t = t1.QuadPart-t0.QuadPart;Nun, wie kann ich das (t) in einem MessageBox funktion benutzen??
(t) hier ist das Abgelaufene Zeit.Danke
-
Tja, wenn es einfach nur "long" ist, dann geht es sicherlich so:
void ShowLong_Test(long lValue) { char * buf[15]; sprintf(buf, "%d", lValue); MessageBox(0, buf, "Test Long", 0); }Geht das bei "Doppel-Long" so nicht?
-
spakko schrieb:
Tja, wenn es einfach nur "long" ist, dann geht es sicherlich so:
void ShowLong_Test(long lValue) { char * buf[15]; sprintf(buf, "%d", lValue); MessageBox(0, buf, "Test Long", 0); }Geht das bei "Doppel-Long" so nicht?
Das geht nicht bei mir, es gibt 2 errors:
1. error C2664: 'sprintf' : cannot convert parameter 1 from 'char *[15]' to 'char *'
2. error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char *[15]' to 'LPCWSTR'
Hast du auch solche errors??
MfG
-
void ShowLong_Test(long lValue) { TCHAR buf[15]; #ifdef _UNICODE swprintf( buf, TEXT("%d"), lValue ); #else sprintf(buf, TEXT("%d"), lValue); #endif MessageBox(0, buf, TEXT("Test Long"), 0); }Such am besten mal nach Unicode in C++ unter Google.
-
Es geht aber um ein "long long", Freund Badestrand

long long i = 123LL << 50; std::basic_stringstream<TCHAR> s; s << i; MessageBox(0, s.str().c_str(), _T("huhu"), MB_OK);
-
Oh, ups

Naja, wollte das hier sowieso nicht so stehen lassen:char * buf[15]; sprintf(buf, "%d", lValue);
-
hustbaer schrieb:
Es geht aber um ein "long long", Freund Badestrand

long long i = 123LL << 50; std::basic_stringstream<TCHAR> s; s << i; MessageBox(0, s.str().c_str(), _T("huhu"), MB_OK);Danke ich habe stunden lang gesucht, endlich das hat geklappt.
Aber kanst bitte mir erklären, was sind die LL hier, ich habe auch ohne das
<< 50 compiliert , das resultat war ein window mit 123 . Wo sind die LL.MfG
-
Naja, Konstanten in C++ ...
123 ist ein int.
123U ist ein unsigned int.
123L ist ein long.
123UL ist ein unsigned long.
123LL ist ein long long.
123ULL ist ein unsigned long long.
123F ist ein float.
123.0 ist ein double.Der Wert ist aber immer 123, von daher wird auch nur 123 angezeigt.
Wenn du allerdings 123 um 50 bits nach links schieben willst ... also wenn du da nur 123 schreibst, dann ist das ein int. Wenn ein int nun 32 Bit hat (was sehr üblich ist), und du schiebst das um 50 Bits nach links, dann ist das in C++ undefined behaviour. Die meisten compiler machen einfach 0 draus, zumindest wenns ne Konstante ist. Wenn du aber 123LL schreibst, dann ist es eine long long Konstante. Und wenn long long 64 Bit hat (was wieder sehr üblich ist), dann geht das.
Das "123LL << 50" war also nur zu Demonstrationszwecken, um zu zeigen dass der Code auch wirklich 64 Bit Zahlen verdaut und ausgibt.
-
hustbaer schrieb:
Naja, Konstanten in C++ ...
123 ist ein int.
123U ist ein unsigned int.
123L ist ein long.
123UL ist ein unsigned long.
123LL ist ein long long.
123ULL ist ein unsigned long long.
123F ist ein float.
123.0 ist ein double.Der Wert ist aber immer 123, von daher wird auch nur 123 angezeigt.
Wenn du allerdings 123 um 50 bits nach links schieben willst ... also wenn du da nur 123 schreibst, dann ist das ein int. Wenn ein int nun 32 Bit hat (was sehr üblich ist), und du schiebst das um 50 Bits nach links, dann ist das in C++ undefined behaviour. Die meisten compiler machen einfach 0 draus, zumindest wenns ne Konstante ist. Wenn du aber 123LL schreibst, dann ist es eine long long Konstante. Und wenn long long 64 Bit hat (was wieder sehr üblich ist), dann geht das.
Das "123LL << 50" war also nur zu Demonstrationszwecken, um zu zeigen dass der Code auch wirklich 64 Bit Zahlen verdaut und ausgibt.
Das war sehr informative, danke für die antworts.

MfG