首页 > 解决方案 > 错误:格式 '%lu' 需要一个匹配的 'long unsigned int' 参数 [-Werror=format=]

问题描述

我该如何解决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;
}

标签: cc99

解决方案


你的报价在错误的地方。试试这个

printf("%lu", number);

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

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

推荐阅读