ошибка: формат "% lu" ожидает соответствующий аргумент "long unsigned int" [-Werror = format =] - PullRequest
0 голосов
/ 24 ноября 2018

Как я могу это исправить error ?.Много искал в интернете, но не нашел подобной проблемы.

скомпилировано с gcc -Wall -Werror -std = c99 Код ошибки:

NameOfProgram: In function ‘main’:
NameOfProgram:17:23: error: format ‘%lu’ expects a matching ‘long unsigned int’ argument [-Werror=format=]
             printf("%lu , number");
                     ~~^
NameOfProgram:21:23: error: format ‘%lu’ expects a matching ‘long unsigned int’ argument [-Werror=format=]
             printf("%lu , number");

Программа на c99:

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



int main(void) {

unsigned long number;
printf("Geben Sie irgendeine natürliche Zahl ein, die größer als 0 ist: ");
scanf(" %lu", &number);
printf("\n");

while(number > 0) {

    if(number % 2 == 0) {
        number = number / 2;
        printf("%lu , number");
    }
    else {
        number = (3 * number) + 1;
        printf("%lu , number");
    }
}


return EXIT_SUCCESS;
}

1 Ответ

0 голосов
/ 24 ноября 2018

Ваши цитаты находятся не в том месте.Попробуйте вместо этого

printf("%lu", number);

Но для справки, возможно, стоит подумать о более портативной нотации PRI.Например, если у вас есть явное 32-разрядное целое число без знака, строка формата печати отличается в зависимости от компилятора:

uint32_t number;
printf("My value is: %"PRIu32, number);
...