簡體   English   中英

qsort() 不適用於長整數數組

[英]qsort() doesnot work with an array of long integers

我的代碼

#include <stdio.h>
#include <stdlib.h>

int compare (const void * a, const void * b)
{
    return ( *(long*)a - *(long*)b );
}

int main()
{
    long arr[50] = {
    96998584605411,40693566272356,
    8867531321455,71374670306442,
    57352857357994,1788166056027,
    63349502945247,59799324891707,
    26353174130397,39181960858171,
    88760729874506,77735622774927,
    65389382041144,83564210278376,
    34210610714041,25960810689062,
    30915481991565,46863920152180,
    39693165577270,81307468736394,
    20993925693066,14707273086616,
    51940778082526,28031438753382,
    51923056867661,16931703600607,
    31109898828992,89599450093153,
    34498804713695,36774523858020,
    65593865433917,39538286624853,
    63312447540821,18796138114716,
    64794317568658,85850552382870,
    56557892707211,72388843001640,
    46583476931914,38539500078935,
    95031088595551,88735420786323,
    87050672468742,13877728078926,
    25045274978126,64616891994055,
    67682298778152,16659227331485,
    41265109202214,77090119561917
    };
    qsort(arr, 50, sizeof(long), compare);
    printf("Values are\n");
    int i ;
    for (i=0; i< 50; i++)
        printf("%ld\n", arr[i]);
}

在沒有正確排序的情況下打印其 output

值為

39538286624853
39693165577270
81307468736394
20993925693066
46583476931914
87050672468742
30915481991565
63312447540821
64794317568658
95031088595551
13877728078926
38539500078935
71374670306442
16931703600607
36774523858020
96998584605411
65593865433917
34210610714041
51923056867661
14707273086616
25045274978126
83564210278376
18796138114716
88735420786323
31109898828992
1788166056027
72388843001640
46863920152180
34498804713695
51940778082526
56557892707211
25960810689062
89599450093153
57352857357994
67682298778152
28031438753382
8867531321455
85850552382870
65389382041144
63349502945247
40693566272356
39181960858171
16659227331485
41265109202214
64616891994055
26353174130397
77090119561917
59799324891707
88760729874506
77735622774927

我做錯了什么來打印qsorted數組錯誤?

而不是返回可能 1)溢出或 2)差異不適合int的比較

//return ( *(long*)a - *(long*)b );
return (*(long*)a > *(long*)b)  -   *(long*)a < *(long*)b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM