如何在 -Werror=conversion 选项下使从 'int' 到 'char' 的转换合理? C++11

How to make the conversion from 'int' to 'char' reasonable under -Werror=conversion option? c++11

error: conversion from ‘int’ to ‘char’ may change value [-Werror=conversion]

构建命令示例: g++ -std=c++11 test.cpp -o a.out -Werror=conversion

    auto index = 3;
    char singleChar = 'A' + index; // I want to get A-Z

希望sigleChar是动态赋值的。 你能帮我在不使用开关的情况下解决这个错误报告吗? 怎么写代码比较好?

您必须将其类型转换为 char:

auto index = 3;
char singleChar {static_cast<char>('A' + index)};

'A' + index; // I want to get A-Z 仅适用于 ASCII,不适用于 EBCDIC。

一个更便携的解决方案(不涉及 int 到 char 的转换)是数组索引:

char singleChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[index];