是否更改C++中变量的值

Change the value of a variable in C++?

本文关键字:变量 C++ 是否      更新时间:2023-10-16

我希望你能帮助我。问题是我不知道如何改变变量的值,例如,我有一个"char"变量,然后我想将其更改为"int"或"float"这是代码

#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
{
cout<<" El valor de las calificaciones es A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1 "             <<endl;}
char calificaciones[4];
int resultado,A=10,B=9,C=8,D=7,E=6,F=5,G=4,H=3,I=2,J=1, i, promedio;
for(i=1;i<4;i++)
{
cout<<"Ingrese calificacion con letra "<<i;
cin>>calificaciones[i];

}
promedio=(calificaciones[1]+calificaciones[2]+calificaciones[3])/3;
cout<<"El promedio de sus tres calificaciones es "<<promedio<<endl;
system("pause");
}

该程序应该要求用户输入三个分数,分数以字母显示,如你所见,A=10,B=9等,一旦用户输入了三个字母,程序就会将它们分成三个,但由于变量"calificaciones"首先是一个字符串,我该如何进行我想要的操作,或者我可以用什么命令让程序理解用户输入了三个字母,然后用它们进行操作?希望你能帮助我,谢谢。

如果您最初的问题是,如何更改datatype,很抱歉,这是不可能的。

尽管如此,您试图实现的目标可以通过std::map来实现

创建成绩地图。

std::map<char,int> myGrades;
myGrades.insert ( std::pair<char,int>('A',10) );
myGrades.insert ( std::pair<char,int>('B',9) );
myGrades.insert ( std::pair<char,int>('C',8) );
myGrades.insert ( std::pair<char,int>('D',7) );

读取输入:(这是相同的。唯一的变化是索引从0开始)

for(i=0;i<3;i++)
{
cout<<"Ingrese calificacion con letra "<<i;
cin>>calificaciones[i];
}

从映射中获取实际整数。

int total_grades =  ( myGrades.find(calificaciones[0])->second + 
myGrades.find(calificaciones[1])->second + 
myGrades.find(calificaciones[2])->second);
promedio=total_grades /3.0;  //<-- NOtice 3.0 to avoid int/int

在C++、Java等强类型语言中,不可能更改变量的数据类型。您需要定义一个具有所需类型的新变量。像Python和PHP这样的弱类型语言(通常)是无类型的,可以让你随心所欲地混合和匹配数据类型,但这在C++中是不可能的。从技术上讲,您可以使用空指针来指向任何类型的对象,但它们不允许您更改现有变量的类型。以下是有关强类型和弱类型的更多信息。

如果您可以创建一个新的变量,您可以使用转换函数或在数据类型之间手动转换(如果可能的话)。例如,不可能将字符串"Hello world"转换为int,但可以将类似"42"的字符串更改为int。cstdlib/stdlib.h标头提供了类似atof()atoi()的函数,它们可以进行基本转换(在传递任何C++字符串之前,请确保使用myString.c_str()将其转换为字符数组)。stringstream也是一个非常强大的工具,除了其他用途外,它几乎可以轻松地将任何东西转换为字符串。

我不太确定你想做什么,但你可以使用字符的ASCII值来转换它们。例如,字母A的ASCII值为65,B为66,C为67,依此类推。由于字符本质上是以数字形式存储的,因此可以在不使用特殊转换函数的情况下进行转换。您可以简单地将一个字符分配给int:

char ch = 'A';
int x = ch;           // this is an implicit conversion
cout << x << endl;    // this prints '65'

正在将字符强制转换为整数。您也可以显式转换它:

char ch = 'A';
cout << ch << endl;        // this prints 'A'
cout << (int) ch << endl;  // this prints '65' because of the explicit conversion

它也以另一种方式工作:

int x = 65;
char ch = x;
cout << ch << endl;   // this prints 'A'