0

我有三个整数。外汇: 2012 11 21

我想将它们转换为单个 int20121121

这可以做到吗?我已经尝试过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 回答