Warum können wir nicht verwenden-operator % für float-und double-Operanden-Typ?

Ich bin neu in C/C++, also ich habe ein paar Fragen zum basic Typ:

  1. Ich habe irgendwo gelesen, dass der operator % kann nicht angewendet werden auf float oder double Operanden-Typ.
    Dann, wie kann ich das überprüfen der Teilbarkeit von float-oder double-Variablen-Typen? Ich habe mein Programm mit der folgenden Fehlermeldung:

    #include <stdio.h>
    
    int main()
    {
        double n,k,t,i;
        int j=0;
        scanf("%f %f",&n,&k);
        i=0;
        while(i<n)
        {
            scanf("%f",&t);
            if(t%k==0)   /* error:invalid operands to binary %  */
                j++;
            i++;
        }
        printf("%d",j);
        return 0;
    }
  2. Wenn eine positive ganze Zahl hat eine Reichweite von bis zu 10^9, der qualifier sollte ich verwenden oder wie erreichen Sie eine so große Reichweite?
Was Ihre zweite Frage: je nach compiler long int oder long long int geben Sie den Bereich bis zu 2^63-1 sein oder über 2E9. Wenn Sie es machen unsigned long long int erhalten Sie al der Weg bis 2^64-1 oder 4 Milliarden.
benutzen wir format % anzeiiri für unsigned long long int ??
Ich verstehe nicht, was du damit meinst "wie kann ich es erreichen". Sie sind mit double geben Sie oben. Wenn Sie sich entscheiden, verwenden Sie einen ganzzahligen Typ, dann die Typen, die ich empfehlen (unsigned long long int n, k, t, i;) funktionieren würde. Ein double Typ ist groß genug, um auch diese zahlen, ohne einen Verlust an Präzision - die größte ganze Zahl, die eine double halten kann ohne Verlust der Genauigkeit ist 2^53 - siehe stackoverflow.com/questions/1848700/...
Ja, verwenden Sie %anzeiiri als Formatbezeichner. unsigned long long int i; printf("enter a number: "); scanf("%llu", &i); printf("you entered %lld\n", i);
k thnx alot.. 🙂

InformationsquelleAutor Rohit | 2013-06-22

Schreibe einen Kommentar