c++ - 如何在 C/C++ 中动态选择要转换的类型?

标签 c++ c casting

有什么办法吗

if(...)
  return (char)value;

return (unsigned char)value;

通过将支票移至类型转换中以获得类似的内容

return (???)value;

目标是以不同的方式解释值(value)的内容 例如:(无符号字符)144=>144 和(字符)144=>-112

最佳答案

不,在 C 和 C++ 中,函数的返回类型是固定的,即它将始终返回相同的类型。即使您尝试将强制转换作为 return 语句的一部分,返回的值也会隐式转换为函数的返回类型 - 如果可能的话。如果无法进行隐式转换,您将收到编译错误。

所以

returntype foo(...) {.... return x;}

将始终返回returntype类型的值

在 C++ 中,您可以使用模板来“更改”返回类型,但是一旦解决了模板定义,就会发生同样的情况。强制转换不会改变真正的返回类型。

关于c++ - 如何在 C/C++ 中动态选择要转换的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779365/

相关文章:

c++ - 如何命名某个目录下的文本文件?

c++ - c++ mfc dev 中可以使用的最大图标大小是多少?

c - 如何在 C++ 中创建多边形 ESRI shapefile?

java - 使用 if else 语句导致 0 的货币转换问题

c++ - 是否存在将实际 Base 向下转换为 Derived 的情况?

c++ - 转换为具有相同基数 : 的类

c++ - 我可以更改将引用参数传递到指针的函数的输入并仍然使其工作(C、C++)吗?

C++循环依赖按值返回?

c - 为什么使用 asprintf() 而不是 sprintf()?

c - 为什么使用 -Os 编译会使这个函数变大?