クイック単純な質問(ほとんど好奇心):システムが警告なしでlongを受け入れる理由intがint引数として渡されるのはなぜですか?
私はC++プログラムlong int
で例えば宣言し、その後、私はそれを与える場合を除き、それは問題なく動作します知っているint
を取る機能でそれを呼び出す場合4バイトの大きさの値で、印刷内容が悪くなります。
しかし、これについては何も警告しないということは私には驚きです。私が4バイトのlong int
を宣言すると、システムはその値を格納する32ビットを持つことを知ります。しかし、同じlong int
をint
(2バイト)だけを呼び出す関数に渡すと、この値では使用しないで16ビットのメモリを使用していると仮定しています。
私は正しいですか?または、それは引数として受け取ったlong int
から最低の16ビットだけを使用しますか?ここでのプロセスは何ですか?
コード例:
#include <stdio.h>
void test(int x) // My question is why it accepts this?
{
printf("%d", x);
}
int main()
{
long int y=4294967200; // 32 bits
test(y);
return 0;
}
実際のコードサンプルについてお話ししていただけますか? –
は既に編集済みです。私の質問は、intを受け取ったと思われる関数にlong intを渡すことを受け入れる理由です。 – Miguel
これは暗黙の整数変換があるためです。 –