错误:格式“%lu”需要匹配的“ long unsigned int”参数[-Werror = format =]

时间:2018-11-24 11:21:39

标签: c c99

我该如何解决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 :(得分:2)

您的引号位置错误。试试这个

printf("%lu", number);

但是,作为一个附带说明,可能值得考虑使用更便携的PRI表示法。例如,如果您有一个显式的32位无符号整数,则打印格式字符串因编译器而异:

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