これは c および c++ で有効な操作ですか?
daysgoneby += months[monthindex].day;
基本的に、ルックアップ テーブルのフィールドを int に追加します (この場合は int から int であるため、有効に見えます)。
ここで、daysgoneby は int 型であり、months[monthindex].day
以下の表を参照します。
そうでない場合、なぜですか?また、テーブルにある int 型を使用するためにこれを回避するにはどうすればよいでしょうか。
struct Monthpairs // Fields for month & day lookup
{
const char* mon; // Months
int day; // Days
};
Monthpairs months[] = // Lookup table for months & day
{
{"Jan", 31},
{"Feb", 28},
{"Mar", 31},
{"Apr", 30},
{"May", 31},
{"Jun", 30},
{"Jul", 31},
{"Aug", 31},
{"Sep", 30},
{"Oct", 31},
{"Nov", 30},
{"Dec", 31},
};