Qubc
@Qubc
Ненавижу полисемию.

Почему -Wconversion разрешает передачу integer literal в char параметр?

// -fno-elide-constructors  -m64 -O0 -Wconversion

void f(char c){
}

int main(void) {
    int i = 1;
    f(i);// warning: conversion from 'int' to 'char' may change value [-Wconversion] 8 | f(i);
    f(1);// ??? No warning
    f(256);// warning: overflow in conversion from 'int' to 'char' changes value from '256' to ''\000'' [-Woverflow] f(256);
    return 0;
}
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Ну вообще, char - integral type. Поэтому передавать туда числовую константу можно - это никакой не варнинг. Компилятор сам понимает, что она должна быть типа char и даже проверяет на переполнение и выдает warning, если что.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы