私は3つのintを持っています。Fx:
2012
11
21
それらを単一のintに変換したい20121121
これはできますか?atoi()
結果なしでいじってみました。
さて、あなたが尋ねた質問に直接答えるために、あなたはこのようにそれをするでしょう:
int combined = year*10000 + month*100 + day;
しかし、あなたのアプローチは、実際の問題に対する最善の解決策ではない可能性があります。
問題が日付を比較することである場合、単一の int にパックせずにそれを達成できます。
struct Date
{
int day;
int month;
int year;
};
int Compare(const struct Date* d1, const struct Date* d2)
{
if (d1->year < d2->year) return -1;
if (d1->year > d2->year) return 1;
if (d1->month < d2->month) return -1;
if (d1->month > d2->month) return 1;
if (d1->day < d2->day) return -1;
if (d1->day > d2->day) return 1;
return 0;
}
簡単な方法は、文字列形式を使用してこれを行うことです。
#include <stdio.h>
#include <stdlib.h>
snprintf(buffer, sizeof buffer, "%04d%02d%02d", year, month, day);
int result = atoi(buffer);
効率的ではありませんが、堅牢である可能性があります。