警告:初始化从指针生成整数而不进行强制转换 [-Wint-conversion] char ch = NULL; ^
这是我的代码:
#include <stdio.h>
#include <string.h>
#include "order.h"
void readInts(int* ptr1, int*ptr2, int*ptr3, char* ptrChar);
int main(void)
{
int p1, p2, p3;
char ch == NULL;
readInts(&p1, &p2, &p3, &ch);
if (ch == 'A')
{
printf("%s\n", "Ascending3");
printf("%s %d %d %d\n", "Before swap: ", p1, p2, p3);
ascending3(&p1, &p2, &p3);
printf("%s %d %d %d\n\n", "After: ", p1, p2, p3);
}
else if (ch =='B')
{
printf("%s\n", "Descending3");
printf("%s %d %d %d\n", "Before swap: ", p1, p2, p3);
descending3(&p1, &p2, &p3);
printf("%s %d %d %d\n\n", "After swap: ", p1, p2, p3);
}
return 0;
}
void readInts(int* ptr1, int* ptr2, int* ptr3, char* ptrChar)
{
printf("%s\n", "Enter 3 numbers: ");
scanf("%d %d %d", ptr1, ptr2, ptr3);
printf("%s\n", "Enter a character A&B");
scanf(" %c", ptrChar);
}
答案 0 :(得分:1)
编译器告诉您它希望将NULL分配给指针类型。您为字符分配NULL,而不是字符指针。因此,它将NULL指针隐式转换为0整数,然后再将其指定给字符ch。
它警告你,这可能不是你想要的,你应该检查代码。在您的情况下,您可能只想为角色分配0。
char ch = 0;