我已经在网上搜索了我的问题,我知道从函数返回数组值到我们的主函数(或任何其他函数,无论如何)我需要使用指针(它可以用各种方法完成),我可以用它们来解决我的问题,但是,我仍然很好奇为什么我的程序在一个意想不到的行为(当然对我来说!)的方式,我是一个初学者所以请尽可能详细解释,这里是我的小程序:
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';
}
Run Code Online (Sandbox Code Playgroud)
根据ASCII表,'1'的整数是49,所以我的Func函数中的两个命令都必须显示相同的东西,即49,但它显示为输出:
1
49
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?谢谢.
vso*_*tco 10
std::cout << a <<std::endl;
Run Code Online (Sandbox Code Playgroud)
显示1自s作为非成员运算符std::basic_ostream& operator<<重载,char并显示其对应的ASCII值.另一方面,
std::cout << int('1') <<std::endl;
Run Code Online (Sandbox Code Playgroud)
显示char '1'为int(由于显式强制转换),因此您可以看到相应的ASCII索引49.那是因为对于算术类型而言,std::basic_ostream& operator<<正在拾取成员.
请注意你的路线
a = int(a);
Run Code Online (Sandbox Code Playgroud)
没有做任何事情,它不会改变的类型a来int; 它只是将RHS转换为int然后将其分配int给原始char数据(显然没有丢失数据).在C或C++中,类型在编译时设置为一成不变.