Exoskeletor Δημοσ. 1 Ιουνίου 2010 Δημοσ. 1 Ιουνίου 2010 προσπαθω στην visual c++ να δηλωσω εναν μεγαλο Int σαν long long η __int64 αλλα ειτε παλι παιρνω αρνητικη τιμη ειτε μηδεν, αυτος ειναι ο κωδικας >#include <stdio.h> #include <stdlib.h> #include <time.h> unsigned __int64 antim; unsigned __int64 sigr; /* Sort an array of integers */ void insertion_sort(int a[], int length) { int i; for (i=0; i < length; i++) { /* Insert a[i] into the sorted sublist */ int j, v = a[i]; for (j = i - 1; j >= 0; j--) { if (a[j] <= v) {sigr++; break; } //printf("%d ",sigr); a[j + 1] = a[j]; antim++; //printf("%d ",antim); } a[j + 1] = v; } } int main(void) { antim=0; sigr=0; const int MAX_ELEMENTS = 1000000;//1000000; //int list[MAX_ELEMENTS]; int *list=new int[MAX_ELEMENTS]; int s1[10000]; int s2[100000]; int i,j,n,k; clock_t start; clock_t end; int function_time; // generate random numbers and fill them to the list for(i=0; i < 10000; i++ ){ s1[i] = rand(); } //printf("The list before sorting is:\n"); //printlist(list,MAX_ELEMENTS); printf("Insertion Sort\n"); //10x4 start = clock(); // sort the list insertion_sort(s1,10000); end = clock(); /* Get time in milliseconds */ function_time = (double)(end - start) / (CLOCKS_PER_SEC / 1000.0); printf("10x4 %ld milliseconds %d antimetatheseis %d sigriseis\n", function_time,antim,sigr); //10x5 antim=0; sigr=0; for(i=0; i < 100000; i++ ){ s2[i] = rand(); } start = clock(); insertion_sort(s2,100000); end = clock(); function_time = (double)(end - start) / (CLOCKS_PER_SEC / 1000.0); printf("10x5 %ld milliseconds %d antimetatheseis %d sigriseis\n", function_time,antim,sigr); system("pause"); } εχω δοκιμασει unsigned __int64 antim; unsigned __int64 sigr; unsigned long long antim; unsigned long long sigr; αλλα τιποτα
ippo00 Δημοσ. 1 Ιουνίου 2010 Δημοσ. 1 Ιουνίου 2010 Πάντως το πρόβλημα δεν είναι με την δήλωση αλά με την εκτύπωση. Η πριντφ κανει νερά αφού κάνει πρίντ την πρώτη 64μπιτη μεταβλητή ενώ στο ντιμπαγκερ είναι οκ. Συνεχίζω την έρευνα.. ---------- Προσθήκη στις 19:37 ---------- Προηγούμενο μήνυμα στις 19:32 ---------- > printf_s("10x4 %d milliseconds %I64i antimetatheseis %I64i sigriseis\n", function_time,antim,sigr); there you go
bookysmell2004 Δημοσ. 1 Ιουνίου 2010 Δημοσ. 1 Ιουνίου 2010 Δοκίμασε %ll ή %lld σαν πρώτο όρισμα της printf. Εδώ μια λίστα με specifiers.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.