首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用自己的getch函数发出隐式转换警告

是因为在C语言中,getch函数通常用于从终端读取单个字符。然而,由于C语言中的字符类型是整数类型,当我们使用自己定义的getch函数时,可能会发生隐式转换的警告。

隐式转换是指在表达式中,将一种数据类型自动转换为另一种数据类型。在这种情况下,当我们使用自己的getch函数读取字符时,返回的字符可能会被隐式转换为整数类型,从而导致警告。

为了避免隐式转换警告,我们可以采取以下措施:

  1. 显式地将返回值转换为字符类型:可以使用强制类型转换将返回的整数类型转换为字符类型。例如,可以使用(char)getch()来将返回值转换为字符类型。
  2. 修改getch函数的返回类型:可以将getch函数的返回类型修改为字符类型,以避免隐式转换。例如,可以将函数声明修改为char getch(void)
  3. 使用标准库函数:可以使用标准库函数来替代自己定义的getch函数。例如,可以使用getchar()函数来从终端读取单个字符,而不会引发隐式转换警告。

需要注意的是,以上方法仅适用于C语言。在其他编程语言中,可能会有不同的方式来处理类似的隐式转换警告。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++拾趣——类构造函数转换

只是想罗列一些有意思东西,故取名拾趣。         首先我们看下一种比较常见技术——类构造函数转换。...其效果和使用int_proxy控制住是一样。这是为什么呢?这便是类构造函数转换技术。...稍微总结下类构造函数转换必要条件: 找不到传参类型严格对应函数 找到传参类型严格匹配构造函数 因为转换构造出是临时对象,所以不可修改,故触发转换函数传参类型必须要使用const...限制类构造函数转换方法也很简单,就是给对应构造函数加上explict关键字 class int_proxy { public: explicit int_proxy(int n) :..._m(n) {};         这样通过转换而构造临时对象图谋将会被察觉并禁止。

69820

EntityFramework数据持久化复习资料2、与匿名类型同匿名函数使用

EntityFramework数据持久化复习资料2、与匿名类型同匿名函数使用 ---- 目录 EntityFramework数据持久化复习资料2、与匿名类型同匿名函数使用 前言 开发环境...类型 类型测试 匿名类型 匿名函数 显示匿名数据 遍历匿名对象数据 ---- 前言 微软官方提供ORM工具,ORM让开发人员节省数据库访问代码时间,将更多时间放到业务逻辑层代码上。...var 变量 = 初始值; 显示与对比 使用类型:int num = 1; 使用类型:var num_var = 1; 类型测试 这里我们先定义了一个int类型,当输出其变量类型时候能直接看到输出是...num.GetType()); var num_var = 1; Console.WriteLine(num_var.GetType()); 输出效果:  其它类型赋值测试: 这个异常提示就很直接表述了其转换问题...匿名函数需要使用delegate委托来创建,使用时候直接根据变量名称使用即可。

49030
  • CA1065:不要在意外位置引发异常

    强制转换运算符 以下各节讨论了这些方法类型。...ToString 方法 调试器使用 System.Object.ToString 来帮助以字符串格式显示有关对象信息。 因此,ToString 不应更改对象状态,也不应引发异常。...静态构造函数 从静态构造函数引发异常将导致该类型在当前应用程序域中不可用。 从静态构造函数引发异常应具备充分理由(如安全问题)。 终结器 从终结器引发异常将导致 CLR 快速失败,从而中断过程。...强制转换运算符 由于用户通常不知道已调用了强制转换运算符,因此对它引发异常会感到意外。 因此,强制转换运算符不应引发异常。...对于前面列出所有其他方法类型,可更改逻辑,使其不再必须引发异常。 何时禁止显示警告 如果冲突是由异常声明而不是引发异常造成,则可禁止显示此规则发出警告

    63520

    QFile和QTextStream

    QFile也支持getch()、 ungetch()和putch()。 size()可以返回文件大小。你可以通过使用at()函数得到当前文件位置或者移到一个新文件位置。...Qt使用Unicode文件名。如果你想在Unix系统上使用自己输入/输出,你可以使用encodeName()(和decodeName())来把文件名转换为本地编码。...在Unix上,这些文件名被转换为8位编码。如果你想在Unix上使用自己文件输入/输出,你应该使用这个函数转换文件名。...默认情况下,这个函数把fileName转换为本地8位编码,这取决于用户场所设置。对于用户选择文件名这足够了。应用程序中文件名硬编码只是需要使用7位ASCII文件名字符。...如果你需要更好执行效率,请你试着使用其它打开函数警告:如果f是0(stdin)、1(stdout)或2(stderr)其中之一时,你也许不能搜索。

    69720

    应该对 malloc 返回值进行转换

    问题 在这个 问题 里,有人在 评论 里建议不要对malloc返回值进行转换。...回答 C 中,从 void* 到其它类型指针是自动转换,所以无需手动加上类型转换。 在旧式 C 编译器里,如果一个函数没有原型声明,那么编译器会认为这个函数返回 int。...如果这时没有强转 malloc 返回值,编译器看到要把 int 转换为 int* ,就会发出一条警告。而如果强转了 malloc 返回值,编译器就不会做警告了,在运行时就可能出问题。...强制转换 malloc 返回值并没有错,但画蛇添足!...注意,以上都是以 C 语言为基础上成立,在 C++ 中则是不一样,C++ 是不允许 void* 转换为其它类型,所以需要显示转换,一般用 static_cast。

    67310

    CMake搭建编译环境总结

    -pedantic-errors参数将这些警告视为错误,等同于-Werror=pedantic。 -Wconversion: 在转换可能导致值变化时候发出警告。...在转换时候,如果值发生变化,那么结果可能就不是预料中,所以最好使用转换。...-Wformat 检查标准库函数使用格式是否正确,比如printf格式化字符串中格式符和对应参数是否匹配 -Wunused-function 对已声明但是未定义静态函数和未被使用非内联静态函数发出警告...-Wextra 单单只有-Wall可能还不够严格,GCC还有-Wextra作为补充,包括另外一些没有被-Wall包含警告类型,譬如: 选项 作用 -Wcast-function-type 当函数被强转为不兼容函数指针时发出警告...-Wempty-body 当存在空if、else或者do while语句时发出警告 -Wunused-parameter 当函数有未被使用参数时发出警告,需配合-Wall -Wunused-but-set-parameter

    2.4K20

    C++:16---强制类型转换和类型转换

    旧式强制类型转换 在早期C/C++中,显地进行强制类型转换有以下两种形式: type (expr) ; //函数形式强制类型转换 (type) expr; //...一、static_cast 功能:用来强迫类型转换,或称为显类型转换 static_cast还可以将一个左值转换为右值引用 例如: 将非const对象转换为const对象(但是不能将底层const...注意事项: 使用static_cast会去除编译器警告,但是我们必须自己清楚转换有效,否则转换无效可能会产生未定义结果 演示案例 我们将一个整型对象转换为double类型 int i = 10,...转换,编译器无警告 当我们把较大算术类型赋值给较小类型时,一般强制类型转换编译器会发出警告 但是当我们使用static_cast后,编译器就不会报出警告 演示案例 static_cast对于编译器无法自动执行类型转换也非常有用...然而,并非任何时候都能定义一个虚函数,假设我们无法使用函数,则可以使用一个RTTI运算符 另一方面,与虚函数相比,使用RTTI运算符蕴含着更多潜在风险:程序员必须清楚地知道转换目标类型并且必须检查类型转换是否被成功执行

    2K20

    C++最佳实践 | 1. 工具

    ,则警告用户 -Wnon-virtual-dtor 如果带有虚函数类有非虚析构函数,则警告用户,有助于捕获难以跟踪内存错误 -Wold-style-cast 对C风格类型转换发出警告 -Wcast-align...警告有潜在性能问题强制类型转换 -Wunused 警告任何未使用东西 -Woverloaded-virtual 如果重载(而不是覆盖)虚函数,则发出警告 -Wpedantic 如果使用了非标准C...++则发出警告(所有版本GCC, Clang >= 3.2) -Wconversion 对可能丢失数据类型转换发出警告 -Wsign-conversion 对影响到符号类型转换发出警告(Clang...,则会发出警告(仅在GCC >= 4.8中) -Wdouble-promotion 如果float提升为double则发出警告(GCC >= 4.6, Clang >= 3.8) -Wformat=...,已应用多个用户定义转换 不建议 /Wall 会对标准库中包含文件发出警告,有太多额外警告,因此没什么用。

    3.4K10

    Effective C++: 改善程序与设计55个具体做法

    ■ 对原始资源访问可能经由显转换转换。一般而言显转换比较安全,但转换对客户比较方便。...■ 如果转型是必要,试着将它隐藏于某个函数背后。客户随后可以调用该函数,而不需将转型放进他们自己代码内。 ■ 宁可使用C++-style(新式)转型,不要使用旧式转型。...■ 对 template 参数而言,接口是(implicit),奠基于有效表达式。...条款46:需要类型转换时请为模板定义非成员函数 请记住 ■ 当我们编写一个class template,而它所提供之“与此template相关函数支持“所有参数之类型转换”时,请将那些函数定义为...条款53:不要轻忽编译器警告 请记住 ■ 严肃对待编译器发出警告信息。努力在你编译器最高(最严苛)警告级别下争取“无任何警告荣誉。

    71020

    适合具备 C 语言基础 C++ 入门教程(八)

    前言 在前一则教程中,我们阐述了多态相关概念,其中就包括实现多态所必须函数,以及使用多态这个性质时一些限制内容,本节教程将着重讲解 C++中类型转换问题,其中就包括:dynamic_cast、...C语言类型转换 类型转换 我们在使用C语言进行编程时候,时常会涉及到类型转换问题,我们首先就类型转换进行阐述,话不多说,我们来看一段代码: #include int...,就涉及到我们所说转换,int i = d这句代码就是 int到double转换,而int *p = str所涉及就是char* 到 int *转换,上述代码编译结果如下所示: [image...这是因为当前使用系统是64位,那么 char *和int *是8个字节,但是unsigned int来说,只有4个字节,所以也就造成了上述警告,但是这个警告与本节所讲类型转换无关,其涉及到所使用编译平台区别...C++ 类型转换 本节核心内容还是讲解 C++,上述中 C语言部分是为了引出C++强制转换,在上述中,我们提及了 C语言转换和强制转换,实际上在 C++中也有与之对应内容,在 C++中跟强制转换效果一样便是

    36920

    它终于来了!一起来探查PHP8测试版都有些啥东东

    所有键类型都使用默认强制转换规则,否则抛出 TypeError 所有以数字 n 作为第一个数字键数组将使用 n+1 作为下一个键,即使 n 是负数也一样 默认 error_reporting...,之前在某些情况下是警告 串联运算符 (连接字符串那个 . ) 优先级相对于位移、加法和减法发生了变化 在运行时解析为 null 默认参数将不再地将参数类型标记为可为 null 。...将元素追加到 PHP_INT_MAX 键数组中 将无效类型(数组或类)用作数组键或字符串偏移量 写入标量值数组索引 解压缩不可遍历数组 许多通知转换成了警告: 读取未定义变量、属性、非对象属性...、非数组索引 将数组转换为字符串 将资源作为数组键 使用 null 、 boolean 或 float 作为字符串偏移量 读取越界字符串 将空字符串分配给字符串偏移量 将字符串偏移量分配给多个字节产生警告...private function neededByTrait(): int { return 42; } } 被 ini 中 disable_functions 禁用函数将被视为不存在函数,并且可以自己定义去实现这些被禁用函数

    4.7K40

    适合具备 C 语言基础 C++ 教程(八)

    C语言类型转换 类型转换 我们在使用C语言进行编程时候,时常会涉及到类型转换问题,我们首先就类型转换进行阐述,话不多说,我们来看一段代码: #include int...,就涉及到我们所说转换,int i = d这句代码就是 int到double转换,而int *p = str所涉及就是char* 到 int *转换,上述代码编译结果如下所示: ?...这是因为当前使用系统是64位,那么 char *和int *是8个字节,但是unsigned int来说,只有4个字节,所以也就造成了上述警告,但是这个警告与本节所讲类型转换无关,其涉及到所使用编译平台区别...C++ 类型转换 本节核心内容还是讲解 C++,上述中 C语言部分是为了引出C++强制转换,在上述中,我们提及了 C语言转换和强制转换,实际上在 C++中也有与之对应内容,在 C++中跟强制转换效果一样便是...,换言之,在使用 dynamic_cast进行类型转换时候,类必须具有虚函数

    39820

    读Effective C++

    因为可能出现删除自己,再取自己内容情况 复制对象时勿忘其每一部分。 3 资源管理 资源包括动态内存分配,以及文件描述符,互斥锁,数据库连接,sockets等。...尽可能延后变量定义出现时间。防止程序提前结束,导致不必要构造和析构 少做转型动作。也是会影响效率;尽量使用新式转换(四种) 避免返回handles指向对象内部成分。 为异常安全努力是值得。...避免遮掩继承而来名称。作用域遮掩行为;可使用using声明使用基类名称 区分接口继承和实现继承。选择派生类是继承基类接口,还是接口加实现 考虑virtual函数以外其他选择。...了解接口和编译器多态 了解typename双重意义 学习处理模板化基类内名称 将与参数无关代码抽离templates 运用成员函数模板接受所有兼容类型 需要类型转换时请为模板定义非成员函数使用...有可能因为错过警告而导致复杂调试情况 熟悉标准程序库。

    66720

    C++核心准则ES.48:避免使用类型转换

    写出类型转换代码程序员通常以为知道自己在做什么,或者类型转换可以让代码更容易理解。实际上,它们经常忽视使用一般准则。重载和模板例示通常可以选择正确函数,只要这个函数存在。...转换成(void)是被广泛认可关闭[[nodiscard]]警告方法。...如果你调用了一个带有[[nodiscard]]返回值函数,而且你就是希望放弃处理该结果,首先考虑一下这是否是一个好主意(通常函数作者或者当初使用[[nodiscard]]返回值类型都有很好理由),...但如果考虑之后你还是觉得没问题,而且你代码评审员这也同意的话,使用(void)关闭该警告。...如果目的类型和源类型相同,针对指针类型之间身份转换发布警告。 Warn if a pointer cast could be implicit. 如果指针类型转换可能会发生,发布警告

    63820

    C++数据类型转换之终极无惑

    例如: double d=4.48; int i=d; //报告警告 实际上,数据类型转换工作相当于一条函数调用,若有一个函数专门负责从double转换到int(假设函数是dtoi),则上面的转换等价于...(2)赋值表达式中,右边表达式值自动转换为左边变量类型,并完成赋值。 (3)函数调用传递参数时,系统地将实参转换为形参类型后,赋给形参。...编程原则: 请尽量不要使用类型转换,即使是数据类型转换是安全,因为类型数据转换降低了程序可读性。 2....类型转换函数与普通成员函数一样,也可以在类体中声明,在类外定义; (2)类型转换函数通常是提供给类客户使用,所以应将访问权限设置为public,否则无法被显示调用,类型转换也无法完成;...(2)编译器不给出任何警告也不报错转换总是安全,否则必须使用显示转换,必要时还要编写类型转换函数

    2.5K30

    学生成绩管理系统-C语言(附源码)

    \n"); getch(); fclose(fp); return; } //5计算排名函数 void jspm(int n) { struct score stu[100...(); return; } //0保存信息并退出系统 void bccj() { printf("感谢您使用,欢迎下次使用!...提醒:由于网友反馈,经过自己调试,发现诸多问题,部分代码不规范,逻辑错误等等,不堪入目,绝不是个良好程序,但因近期忙于答辩,代码修改估计在本月月底。...代码细节优化:考虑到开发工具兼容问题,已将getch()函数头文件(conio.h)添加到源代码。函数声明、定义漏写问题(其实是忘了改函数名了)。判断等于NULL报警告?...——2020.7.26 PS:关于使用VS++、VC++小伙伴,我用Visual Studio 2019调试过了,程序能跑了,如果还是报错不能跑,我也没辙了。。

    12.2K66

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券