0

Windows コンソールでセルの数を手動で計算しています。(はい、この情報は、入力された CONSOLE_SCREEN_BUFFER_INFO 構造体から入手できることを知っています。)

#include <windows.h>
#include <stdio.h>

int main(void)
{
    HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    RECT workarea;
    COORD c;

    SystemParametersInfoW(SPI_GETWORKAREA, 0, &workarea, 0);
    printf("Rectangle: %ld x %ld\n", workarea.right, workarea.bottom);
    c.X = workarea.right / 8;
    c.Y = workarea.bottom / 12;
    printf("Cells: %d x %d\n", c.X, c.Y);

    return 0;
}

RECT workarea、4 つの長整数を含む構造体です。はCOORD c、2 つの短整数の構造体です。

long 整数を整数 (上記のように 8 または 12 など) で除算する場合、結果の定数を short 整数に代入する際に問題はありますか? Visual Studio 2012 は、予想どおりコンパイル時の警告を生成します。

しかし、この特定のケースのテストでは、デスクトップの解像度からタスクバーの高さ (例: 1680 x 1010 ピクセル) を引いたものSystemParametersInfoW(SPI_GETWORKAREA, 0, &workarea, 0)しか得られません。RECT workarea

もちろん、これらの数値は十分に短い整数の範囲内にあります。したがって、質問は、この特定のケースでデータが失われる可能性はありますか?

4

1 に答える 1