Как убрать предупреждение «преобразование в« char »из« int »может изменить его значение»
Я думаю, что если яcast
число, подобное этому(unsigned char)32
этого будет достаточно, чтобы исправить предупреждение компилятора, но это было не так, как я планировал.
Здесь у меня есть следующая часть программы, которая фактически объясняет проблему:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void){
char *ptr = malloc(6);
const char *name = "MICHI";
unsigned int i = 0;
if(ptr){
strcpy(ptr, name);
ptr[strlen(ptr)] = '\0';
}else{
return 1;
}
while(ptr[i] != '\0'){
if((ptr[i] >= 'A') && (ptr[i] <= 'Z')){
ptr[i] += (unsigned char)32;
}
i++;
}
printf("Name = %s\n",ptr);
if(ptr){
free(ptr);
ptr = NULL;
}
}
Когда я пытаюсь скомпилировать его с предупреждениями компилятора, я получаю это:
error: conversion to ‘char’ from ‘int’ may alter its value [-Werror=conversion]|
Это означает следующееptr[i] += (unsigned char)32;
не дает решения моей проблемы.
Мой вопрос, как отбросить это предупреждение, потому что я понятия не имею об этом.
Ideone не очень помогает, потому что я думаю, что все предупреждения отключены.