我在网上搜索了我的问题,我知道为了将数组值从一个函数返回到我们的主函数(或任何其他函数,无论如何)我需要使用指针(它可以通过各种方法完成) ,我也可以用它们来解决我的问题,但是,我仍然很好奇为什么我的程序以一种意想不到的方式运行(当然对我来说!),我是初学者所以请尽可能详细地解释你可以,这是我的小程序:
char Calc(char);
int main(){
Calc('1');
return 0;
}
char Calc(char a) {
a = int(a);
std::cout << a <<std::endl;
std::cout << int('1');
_getch();
return 'c';
}
根据 ASCII 表,'1' 的整数是 49,所以我的 Func 函数中的两个命令都必须显示相同的东西,即 49,但它显示为输出:
1
49
我在这里错过了什么?谢谢。
最佳答案
std::cout << a <<std::endl;
显示 1
自 std::basic_ostream& operator<<
为 char
重载s 作为非成员运算符并显示其相应的 ASCII 值。另一方面,
std::cout << int('1') <<std::endl;
显示char
'1'
作为int
(由于显式强制转换),所以您会看到对应的 ASCII 索引 49
反而。那是因为对于算术类型,成员 std::basic_ostream& operator<<
取而代之的是。
注意你的行
a = int(a);
什么都不做,它不会改变 a
的类型至 int
;它只是将 RHS 转换为 int
然后分配回 int
到原文char
(显然没有数据丢失)。在 C 或 C++ 中,类型在编译时是一成不变的。
关于c++ - 将单个字符传递给 C++ 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227393/