Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于MFC对话框的计算器_C++_Mfc_Dialog_Calculator - Fatal编程技术网

C++ 基于MFC对话框的计算器

C++ 基于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,它会正常工作,直到我按了

我正在尝试使用基于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,它会正常工作,直到我按了大约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);
}