トップ回答者
unsigned int64の入力可能桁数がおかしい?

質問
-
unsigned int64の入力可能桁数がおかしい?(3回目の質問)
OS:WINDOWS 8
64ビットOS
VISUAL STUDIO 2012において、VISUAL C++を起動して、→「Win32コンソールアプリケーション」で、以下のようなコーディングをしました。
------------------------------------------------------------------------------------------------
#include "stdafx.h"
char inputchar[30];
unsigned __int64 inputdata;
int main(void)
{
abc();
return 0;
}
void abc(void)
{
strcpy_s(inputchar ," ");
while (strcmp(inputchar ,"") != 0){
gets_s(inputchar);
inputdata = _atoi64(inputchar);
printf("inputdata=%I64u\n",inputdata);
}
}
------------------------------------------------------------------------------------------------
#include "stdafx.h"の中身は以下の通り
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include <string.h>
#include <time.h>
#include <stdlib.h>
------------------------------------------------------------------------------------------------
unsigned int64の定義では、「
0 ~ 18,446,744,073,709,551,615 まで、入力可能のはずなのに、自分の思った通りに
printf に表示されません。
(1番目のパターン)
inputdata=1234567890 と入力すると、inputdata=1234567890
治りました。
(2番目のパターン)
inputdata=12345678901 と入力すると、inputdata=12345678901
治りました。
(3番目のパターン)
inputdata=18446744073709551615 と入力すると、inputdata=9223372036854775807
と、なってしまいます。わたしのイメージだと、
inputdata=18446744073709551615 と入力すると、inputdata=18446744073709551615
と、表示されると思ったのですが、どこがいけなかったのでしょうか?
どこがおかしいのか、教えてください。
よろしくお願いします。- 編集済み ミミちゃんパパ 2013年11月4日 8:44
すべての返信
-
ダメとは言いませんが、短時間で同じテーマの質問を書き込み、そして自力解決されていますので、もう少し質問するまでの試行錯誤を増やしてみてはいかがでしょうか。
また、フォーラムにせっかく質問として書いたのであれば、なぜダメだったか、どうしたら改善したのかを書き残してください。今のままでは、同じ疑問を持った人がここのスレッドを見つけたとき、何の役にも立たず、あなたに対して不満を持つかもしれません。
フォーラムに書き込んで質問されるということは、第三者にその問答が読まれることを意識してください。
(フォーラムの内容はかなり長く公開されたままになりますので、数年後に似たような疑問を抱いてこのスレッドを見つける可能性がある、半永続的な資産だと思ってください)- 編集済み AzuleanMVP, Moderator 2013年11月4日 10:44