に私はGNUのC++コンパイラでこのコードをしようとし、その動作を理解することができませんしています:は長い長いC/C++
#include <stdio.h>;
int main()
{
int num1 = 1000000000;
long num2 = 1000000000;
long long num3;
//num3 = 100000000000;
long long num4 = ~0;
printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
printf("%d %ld %lld %llu", num1, num2, num3, num4);
return 0;
}
私はコメント行のコメントを解除すると、コードがコンパイルされないと与えていますエラー:コードをそのままコンパイルされ、実行された場合
はしかし、それはなぜ10000000000.よりもはるかに大きい値を生成する
error: integer constant is too large for long type
?
今は遅すぎるかもしれませんが、将来の読者のためには、 ''を使用し、 'uint64_t'を使うことをお勧めします。 'printf("% "PRIu64" \ n "、val);' –
enthusiasticgeek