Как убрать предупреждение «преобразование в« 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 не очень помогает, потому что я думаю, что все предупреждения отключены.

Ответы на вопрос(4)

Ваш ответ на вопрос