Formatbezeichner für unsigned long long ?
-
Hallo,
ich verwende Code:Blocks auf einem Win64 Rechner und bekomme warnings "unknown conversion type character
l
in 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);