前提・実現したいこと
C++初心者です。
符号なし整数型について質問があります。
符号付き整数は int, long, long long
符号なし整数は unsigned int, ~
のように記述することはわかりました。
しかし、いちいち unsigned ~ とするのは面倒と思い、uint, ulongと書いてみたところ正常にコンパイルできました。
どうやらどこかで
typedef unsigned int uint
typedef unsigned long ulong
のような定義がされているようなのですが、教科書にはこのような符号なし整数の記法は出てきませんでしたし、ググってもよくわかりませんでした。
この符号なし整数の記法は標準的なものですか?
それともコンパイラ依存ですが多くのコンパイラで定義されているものなのでしょうか。
試したこと
試したコンパイラはgnuとintelです。
g++、icpcともにコンパイルできました。
ソースコード
cpp
1#include <iostream> 2 3int main() { 4 uint foo = 4294967295; 5 ulong bar = 18446744073709551615u; 6 7 std::cout << foo << std::endl; 8 std::cout << bar << std::endl; 9}
補足情報
環境はubuntu(WSL)です。
コンパイルしたソースを上げて下さい。ソースがなければ、インクルードファイルも何もわかりません。
(普通にiostreamのインクルードだけでは、Linuxでgccやclangでコンパイルするとulong型はエラーになります)
iostreamのみのインクルードで、当方の環境では実行できました。
(接尾辞"u"をつけないと、ulongではgccにwarningされました)
環境によるところが大きいようですね。
なるほど・・・
>環境によるところが大きい・・・みたいですね。
こちらだと、/usr/include/x86_64-linux-gnu/sys/types.hに
#ifdef __USE_MISC
/* Old compatibility names for C types. */
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
#endif
って、定義されているようです。

回答3件
あなたの回答
tips
プレビュー