私はそのように、「自然」タイプを定義しようとしました:なぜtypedefで自然な型を定義しようとしたのですか?
typedef unsigned int nat;
しかし、私はNATの変数を定義した場合、その変数は、通常のint型のように振る舞う:履歴書で
nat natural_index;
natural_index = 10; // That's what I want.
natural_index = -10; // Still a valid option.
、私が欲しかったです "-10はunsigned intではありません"のようなコンパイラがメッセージを表示しない理由を知るために、「自然な」型を定義するために何ができるでしょうか。
追加情報:変数natural_indexを "printf"し、値「-10」を出力しました。私は少なくとももう一つの正の数(正確には10ではない)を期待していました。
診断を表示するために、コンパイラの警告レベルを上げることができます。 gccでは '-Wconversion'を使って' Warning:負の整数を暗黙的に符号なし型に変換します[-Wsign-conversion] x = -10; ' –
!このメッセージは本当にここ(そしていくつかのもの)によって現れました!素晴らしいヒント!ありがとう@DavidBowling – Vytor