error: format ‘%lu’ expects a matching ‘long unsigned int’ argument [-Werror=format=]
error: format ‘%lu’ expects a matching ‘long unsigned int’ argument [-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;
}
你引用的地方不对。试试这个
printf("%lu", number);
但作为旁注,可能值得考虑更便携的 PRI 表示法。例如,如果你有一个明确的 32 位无符号整数,则打印格式字符串因编译器而异:
uint32_t number;
printf("My value is: %"PRIu32, number);
我该如何解决 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;
}
你引用的地方不对。试试这个
printf("%lu", number);
但作为旁注,可能值得考虑更便携的 PRI 表示法。例如,如果你有一个明确的 32 位无符号整数,则打印格式字符串因编译器而异:
uint32_t number;
printf("My value is: %"PRIu32, number);