0

私は3つのintを持っています。Fx: 2012 11 21

それらを単一のintに変換したい20121121

これはできますか?atoi()結果なしでいじってみました。

4

3 に答える 3

8

さて、あなたが尋ねた質問に直接答えるために、あなたはこのようにそれをするでしょう:

int combined = year*10000 + month*100 + day;

しかし、あなたのアプローチは、実際の問題に対する最善の解決策ではない可能性があります。

于 2012-11-21T13:01:58.463 に答える
4

問題が日付を比較することである場合、単一の 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;
}
于 2012-11-21T13:10:06.983 に答える
3

簡単な方法は、文字列形式を使用してこれを行うことです。

#include <stdio.h>
#include <stdlib.h>

snprintf(buffer, sizeof buffer, "%04d%02d%02d", year, month, day);
int result = atoi(buffer);

効率的ではありませんが、堅牢である可能性があります。

于 2012-11-21T13:02:17.707 に答える