#include<string.h>
#include<limits.h>
using namespace std;
void v6(char rq,int &cost)
{
if(rq=='2')
cost+=1;
if(rq=='1')
cost+=2;
if(rq=='3')
cost+=3;
}
int main()
{
int cost=0;
v6(2,cost);
cout<<cost;
}
输出:
0
但是,c
的值(通过引用传递)没有变化;请解释一下。
也使用了指针,但无济于事
答案 0 :(得分:4)
我在函数调用中进行的微小更改应该可以为您提供所需的行为
v6('2',cost);
您的if
语句选中char
而不是数字。您要么应用上述更改,要么更改if
语句
void v6(char rq,int &cost)
{
if(rq==2)
cost+=1;
if(rq==1)
cost+=2;
if(rq==3)
cost+=3;
}
答案 1 :(得分:2)
您在函数调用中传递了Numeric 2
而不是char 2
。
v6(2,cost);
必须替换为v6('2',cost);
传递2
传递的ASCII等效值2(http://www.asciitable.com/)。
等效于'2'
的ASCII码为50。因此,v6(50,cost);
或v6('2',cost);
将为您提供相同的结果。