在char中输入函数的cast int参数

时间:2013-11-05 04:27:44

标签: c++

  

PrintLines函数必须具有三个形式参数,所有参数都为int。

     

从左到右,3参数版本的PrintLines中的参数表示要打印的字符的值,字符在一行上打印的次数以及要显示的行数产生的。

     

例如,PrintLines('C',5,2)将导致:

     

CCCCC

     

CCCCC

     

PrintLines函数使用int参数类型来表示此字符。但请注意,在存在函数原型的情况下调用时,所有兼容参数都将转换为相应函数参数的类型。这意味着即使您使用类型char变量从用户获取所需的字符,如果传递给具有int类型参数的函数,它也会自动转换为int类型。但是,为避免可能的编译器警告,在传递此类参数时使用类型转换。此外,总是声明函数返回类型为void,除非返回一个值可以起到有意义的作用。

我的问题是我不知道如何正确输入“a”参数。要求是PrintLines接受三个int参数,但如果我为参数“a”输入一个非整数,程序就会崩溃。我试图在原型,函数头和输出中输入“a”变量。我已经包含了一些注释代码,以显示到目前为止我尝试过的内容。代码编译但我认为存在运行时/逻辑错误。

有人可以帮忙吗?

这是main.cpp的代码

#include<iostream>

using namespace std;

int a ;
int b ;
int c ;

void PrintLines( int, int, int ) ;

int main(void)
{

  //cin >> (char)a >> b >> c ;
  cin >> a >> b >> c ;
  cout  << '\n' ;
  //PrintLines( (char)a, b, c ) ;
  PrintLines( a, b, c ) ;
  cout  << '\n' ;

  system("pause");
  return 0;

}

以下是PrintLines.cpp的代码

#include<iostream>

using namespace std;

//void PrintLines( char a, int b, int c )
//void PrintLines( (char) a, int b, int c )
void PrintLines( int a, int b, int c )
{
  for(int i = 0; i < c;  i++)
  {

    for(int j = 0; j < b; j++)
    {
      //cout << (char) (a - 48);
      //cout<< (char) a << '\n' ;
      cout << a ;
    }

    cout << '\n' ;
  }     

}

2 个答案:

答案 0 :(得分:2)

cout <<int一起使用时,您会得到一个数字输出,而不是一个字符。您需要将参数类型转换为char

cout << (char) a;

另一个问题是你将读取字符作为整数。如果您将a改为char而不是int,则会将其视为单个字符,并在函数调用中自动向上转换为int

答案 1 :(得分:0)

使用static_cast!

cout << static_cast<char>(a);

更好地使用正确的强制转换而不是c风格的强制转换

相关问题