我有三个整数。外汇:
2012
11
21
我想将它们转换为单个 int20121121
这可以做到吗?我已经尝试过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);
它效率不高,但可能很健壮。