【发布时间】:2016-11-26 15:23:43
【问题描述】:
我有一个 Node 类型的单链表,定义如下:
struct Item {
long date;
bool isPaid;
};
struct Node{
Item item;
Node* next;
};
其中“日期”是一个采用“ddmmaaaa”形式的字段(即,前两位数字表示日期,后两位数字表示月份,后四位数字表示年份)。 但是,当我尝试添加几个节点时,我插入了一个不同的数字:
newItem=new Node;
newItem->item.date=01062016;
newItem->item.isPaid=true;
newItem->next=nullptr;
list=insertItem(list, newItem);
(insertItem 是我的函数,它接受一个指向列表头的指针和一个指向新节点的指针并将该节点插入到列表中)。
如果我尝试将类似 13042016 的内容分配给长字段,我会得到正确的数字:
但是,当我尝试分配 01062016 时,我得到了 287758:
我不想使用不同的方法(我知道日期很奇怪,我只是需要这种方式)。只是为了理解为什么当我添加一个完全适合长变量的日期时会得到奇怪的数字。 我正在使用基于 Qt 5.1.0 的 Qt Creator 2.7.2。
【问题讨论】:
-
将
long用作类型是错误的。如果您知道自己需要 64 位,请使用qint64或int64_t。基本上,如果int不能削减它,您需要使用给定尺寸的便携式类型。