在c中组合多个整数

时间:2012-11-21 12:58:37

标签: c

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

我想将它们转换为单个int 20121121

可以这样做吗? 我尝试过使用atoi()而没有结果。

3 个答案:

答案 0 :(得分:8)

好吧,直接回答你提出的问题,你会这样做:

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

但是你的方法很可能不是你实际问题的最佳解决方案。

答案 1 :(得分: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;
}

答案 2 :(得分:3)

一种简单的方法是使用字符串格式来执行此操作。

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

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

效率不高,但可能很强大。