Προς το περιεχόμενο

Προβλημα με δηλωση μεγαλου int


Exoskeletor

Προτεινόμενες αναρτήσεις

Δημοσ.

προσπαθω στην 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;

 

αλλα τιποτα

Δημοσ.

Πάντως το πρόβλημα δεν είναι με την δήλωση αλά με την εκτύπωση. Η πριντφ κανει νερά αφού κάνει πρίντ την πρώτη 64μπιτη μεταβλητή ενώ στο ντιμπαγκερ είναι οκ. Συνεχίζω την έρευνα..

 

---------- Προσθήκη στις 19:37 ---------- Προηγούμενο μήνυμα στις 19:32 ----------

 

>
printf_s("10x4 %d  milliseconds %I64i  antimetatheseis %I64i  sigriseis\n", function_time,antim,sigr);

there you go

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...