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