【发布时间】:2020-03-29 10:32:55
【问题描述】:
#include <iostream>
#include <vector>
#include <cctype>
using namespace std;
char get_selection() {
char selection{};
cin >> selection;
return toupper(selection);
}
int main() {
char selection {};
do{
selection = get_selection();
switch(selection){
...
}
} while(selection!='Q');
cout<<endl;
return 0;
}
我想知道为什么我会收到此检查/警告/提示
Clang-Tidy:从“int”缩小到有符号类型“char”的转换是实现定义的
我唯一要做的就是获取 char 并“大写”它,以防它还没有,所以我不必在我的开关上处理 2 个案例。 有谁知道我必须改变什么才能摆脱这个,所以我会把它完全绿色化,因为这是唯一的问题? 看来我缺乏一些关于转换的知识。
谢谢!
【问题讨论】:
-
伙计,我已经阅读了关于这个问题的主题,但我没有阅读正确的主题。我现在写了 return static_cast
(toupper(static_cast (selection)));就像注释中所说的那样,我摆脱了那张支票。但只是因为我看到了我应该如何编写它并且只是修改了我的代码 - 理解它,好吧,我没有,因为注释很短。我们甚至根本无法解释为什么我们会收到该消息。朋友的相同代码没有显示这样的消息,但他使用 codelite 和 c++17。因此,可能存在版本或 IDE 问题。艾伦,非常感谢。
标签: c++ integer implicit-conversion narrowing