Formatbezeichner für unsigned long long ?
-
Hallo,
ich verwende Code:Blocks auf einem Win64 Rechner und bekomme warnings "unknown conversion type character
lin format. Too many arguments for format" bei der Verwendung von unsigned long long.llu ist doch der Formatbezeichner für unsigned long long oder?
#include <stdio.h> void fibonacciNumber(int n) { unsigned long long fib1 = 0, fib2 = 1; if (n < 1) return; printf("%llu ", fib1); for (int i = 1; i < n; i++) { printf("%llu ", fib2); unsigned long long nextNum = fib1 + fib2; fib1 = fib2; fib2 = nextNum; } } int main() { int numbers, clearBuffer; char answer; do { printf("Fibonacci sequence calculator - Enter a number :"); scanf("%i",&numbers); fibonacciNumber(numbers); while ((clearBuffer = getchar()) != EOF && clearBuffer != '\n'); printf("\n\nNew calculation? [y / n]"); scanf("%c",&answer); }while ((answer == 'y') || (answer == 'Y')); return 0; }
-
Was für einen Compiler verwendet Code::Blocks denn? Der
printf-Code sieht richtig aus, das Programm kompiliert mit gcc ohne Warnungen.PS:
Du könntest beim scanf einfach ein Leerzeichen vor das"%c"setzen, alsoscanf(" %c", &answer), um dir die clear-Buffer-Loop zu sparen.
-
@ledi Das hängt von der verwendeten Standard Library ab.
Es wird auf Windows durchaus die MS Library benutzt.
Und die kennt kein %llu.Evtl. geht %I64u oder die passenden Bezeichner aus der <stdint.h>
#include <stdint.h> #include <stdio.h> uint64_t wert; printf("Der Wert ist %" PRIui64 "\n", wert);