这是一个小程序,用于计算"间隔"大小的间隙,这些间距在两个数字之间,从'到'.然后我计算'大小'(间隙数)并将其存储在一个int变量中,有时给我一个较小的值.
这是代码:
double from=0, to=1, interval=0.1;
cout << "WORKING WITH VARIABLES: " << endl;
double operation = (to-from)/interval +1;
cout << "Size: " << operation << endl;
int size = operation;
cout << "Size after storing: " << size << endl << endl;
cout << "WORKING WITHOUT VARIABLES: " << endl;
cout << "Size: " << (to-from)/interval +1 << endl;
size = (to-from)/interval +1;
cout << "Size after storing: " << size << endl << endl;
Run Code Online (Sandbox Code Playgroud)
问题似乎在于它的存储间隔.如果interval = 1,一切都很好,但如果是0.1,那么在例子中它给我10而不是11在第二种情况下的"存储后的大小".
我发现它适用于interval …
我正在使用C++中的WinApi来更改控制台属性,并在最后两个函数中调用GetConsoleScreenBufferInfo()时出现分段错误错误.
奇怪的是,如果我重现相同的代码片段 - 只需在main()中使用相同的HANDLE声明和PCONSOLE_SCREEN_BUFFER_INFO-调用GetConsoleScreenBufferInfo(),我就不会出现错误,但如果我在getPosCursorX()内部这样做,我仍然会收到错误.
命名空间consola {
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
PCONSOLE_SCREEN_BUFFER_INFO infoCon;
struct TamanoConsola
{
COORD buffer;
SMALL_RECT ventana;
} inicial;
void gotoxy(int x, int y)
{
COORD dwPos;
dwPos.X=x;
dwPos.Y=y;
SetConsoleCursorPosition(hCon, dwPos);
}
void setColor(int texto, int fondo)
{
SetConsoleTextAttribute(hCon, fondo*16+texto);
}
void setBufferTamano(int ancho, int alto)
{
COORD buffertamano = {ancho, alto};
if(SetConsoleScreenBufferSize(hCon, buffertamano) == 0)
std::cout << "ERROR de WinApi numero: " << GetLastError() << std::endl;
}
void setVentanaTamano(int ancho, int alto)
{
SMALL_RECT ventanatamano1 ={0, 0, …Run Code Online (Sandbox Code Playgroud)