前提・実現したいこと
unsigned long に負の数を代入した際
10進数表記の値は正の数で表示される。
発生している問題・エラーメッセージ
unsigned long B = -561;
printf("B = %x\n",b);
printf("B = %d\n",B);
実行結果
B = 0xFFFFFDCF
B = -561 ※ここは 4294966735 ではないのか???
該当のソースコード
unsigned long B = -561;
printf("B = %x\n",b);
printf("B = %d\n",B);
試したこと
◆直接 0xFFFFFDCF を代入し実行
unsigned long B = 0xFFFFFDCF; printf("B = %d\n",B);
>実行結果 B = -561
◆unsigned short BBに 0xFDCF を代入。
unsigned short BB = 0xFDCF; printf("BB = %d\n",BB);
>実行結果 BB = 64975
上記二つの違いがでる理由がわからない。
補足情報(FW/ツールのバージョンなど)
windows 7 のコマンドプロンプトにて GCC で実行しています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/25 07:03
2019/06/25 07:05