2016-11-26 4 views
0

私はこのように定義されたNode型の単独リンクリストを持っている:「日付」は形をとるだろうフィールドですC++ 11 QtCreator:長整数が正しくに読み込まれていない変数

struct Item { 
    long date; 
    bool isPaid; 
}; 
struct Node{ 
    Item item; 
    Node* next; 
}; 

"ddmmaaaa"(つまり、その日の最初の2桁、2番目の2桁の数字、最後の4桁の数字)。私はいくつかのノードを追加しようとすると、 はしかし、私は、挿入された別の番号を取得する:

newItem=new Node; 
newItem->item.date=01062016; 
newItem->item.isPaid=true; 
newItem->next=nullptr; 
list=insertItem(list, newItem); 

(InsertItem関数は、リストの先頭へのポインタと新しいノードへのポインタを取り、ノードを挿入し、私の関数でありますリスト内の)。

私は長いフィールドに13042016のようなものを割り当てるしようとした場合、私は右の番号を取得:

this is right

私は01062016を割り当てるしようとすると、しかし、私が代わりに287758を得る:

this is wrong

私は別のアプローチを使用しようとしていません(私は日付のことが奇妙であることを知っています、私はちょうどこの方法が必要です)。長い変数に完全に当てはまる日付を追加すると、なぜ奇妙な数値が得られるのかを理解するだけです。 私はQt 5.1.0に基づいてQt Creator 2.7.2を使用しています。

+0

タイプとして「long」の使用が誤っています。例えば64ビットが必要だと分かっているなら、 'qint64'か' int64_t'を使います。基本的に 'int'で切り取らない場合は、指定したサイズの移植可能な型を使う必要があります。 –

答えて

4

0で始まっているため、0xではないので、それは8進数で、それは10進数で287758と等価です。

Integral Literalを見る

進リテラル桁のゼロ(0)はゼロまたはそれ以上の8進数字によって(0、1、2、3、4、5、6、7)

を追跡します
関連する問題