1

これは 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},
};
4

1 に答える 1

1

あなたのステートメントは完全に問題ありません。最終的にはday、ルックアップテーブルのフィールドintも同様です。

質問のタイトルに関しては、ペアで特定のフィールドを使用しても問題ありませんが (演算子/関数の型が正しい限り)、型が一致しないため、ペア自体に追加することはできません。オペレーターが期待します。

于 2013-04-17T18:11:27.540 に答える