C++ 基于MFC对话框的计算器
我正在尝试使用基于visual studio 2010的MFC对话框创建一个计算器。这是我的代码,当我按下按钮1时,它将显示在计算器屏幕上。因此,如果我按一次1,它将显示1,如果我按三次1,它将显示111 我的问题是,如果我省略int n=num1并使用t.Format\u t%d,num1;行这行不通。是因为当num1转换为字符串时,num1会转换为字符串。我以为num1转换后的字符串值会存储在CString t中,num1会保持为intC++ 基于MFC对话框的计算器,c++,mfc,dialog,calculator,C++,Mfc,Dialog,Calculator,我正在尝试使用基于visual studio 2010的MFC对话框创建一个计算器。这是我的代码,当我按下按钮1时,它将显示在计算器屏幕上。因此,如果我按一次1,它将显示1,如果我按三次1,它将显示111 我的问题是,如果我省略int n=num1并使用t.Format\u t%d,num1;行这行不通。是因为当num1转换为字符串时,num1会转换为字符串。我以为num1转换后的字符串值会存储在CString t中,num1会保持为int 还有这个代码,如果我一直按1,它会正常工作,直到我按了
还有这个代码,如果我一直按1,它会正常工作,直到我按了大约11次。然后它会显示-2147483648而不是111111。这是为什么,有人能告诉我这有什么问题吗?我对MFC完全不熟悉如果要进行32位计算,可能需要64位整数或限制位数。尽管即使使用了_uint64,也会有一个限制。我的观点是111111太大了,无法放入32位整数。num1的类型是什么?要与%d格式一起使用,它必须是int。@ScottMcP MVP num1的类型为double。现在我将其更改为“%g”,现在我可以删除int n=num1。但在多次按1后,它仍显示1.22211e+006@drescherjm:如何将num1设置为双精度,并在编辑框中将输入作为正确输入?这就是显示值的地方。因此,使用double和string时,我不能写超过10个数字吗?我会将输入保留为字符串,因此当他们按1键时,只需在显示的字符串中附加1个数字。然后,当他们按操作键+、-、*、/,等时,读取字符串并将其转换为数字。
void CCalculatorDlg::OnBnClickedButton1()
{
CString t;
num1=(num1*10)+1;
int n=num1;
t.Format(_T("%d"),n);
SetDlgItemText(IDC_EDIT1,t);
}