在Codepad上编译:
#include <iostream>
using namespace std;
void main (void)
{
char ch[2];
int value;
cout<<"Enter two integers between 0-9"<<endl;
cin.getline(ch,2);
//testing with char array
//(...)
//how could I do operations like '*', '+', '-', or '/' to the char arrays
}
给出:
第4行:错误:':: main'必须返回'int' 由于-Wfatal-errors而导致编译终止。
例如:
让我们说ch[0]='5'
和ch[1]='3'
我需要做什么,所以我可以执行ch [0] - ch [1] = 2并存储到int值
答案 0 :(得分:1)
你根本不需要做任何事情。 int x = ch[0] - ch[1]
可以像你期望的那样工作。
答案 1 :(得分:1)
我想原来的练习会要求你得到两个不同的整数,每个整数可能超过1个字符。
然而,问题的解决方案:ch [0] - ch [1]。
为什么会这样?
Ascii字符'0'是字符48。 Ascii字符'9'是字符48 + 9
现在...
'4' - '3'=(48 + 4) - (48 + 3)= 4 - 3 = 1.
答案 2 :(得分:0)
您发布的代码存在一些不同的问题。 main
需要返回int
。
int main() { /* .. */ }
您对cin.getline
的调用只会填充您声明的数组中的单个字符,因为函数调用将使null终止数组。你需要
char array[3];
cin.getline( array, 3 );
之后,如果array[0]
包含'5'而array[1]
包含'3',则可以直接执行
array[0] - array[1]
获取整数结果2。
如果你需要处理[0..9]范围之外的数字,你需要将它们转换为数字表示。这可以使用std::stringtream
或atoi
完成。