我有三个整数。
外汇:
2012
11
21
我想将它们转换为单个int 20121121
可以这样做吗?
我尝试过使用atoi()
而没有结果。
答案 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);
效率不高,但可能很强大。