integer-promotion

    2

    1答えて

    tl; drビット操作が安全で、整数昇格(intより短い型)を通過するときに期待通りに動作していますか? uint8_t a, b, c; a = b & ~c; これは私が持っているものの大まかなMCVEです: struct X { // this is actually templated using U = unsigned; // U is actually a depen

    4

    2答えて

    はなぜコンパイラはint&にcharを促進することができませんが、参照ツーのconst(int const&にchar)によってそれを渡すときに問題はありませんか? 例コード: #include <iostream> using namespace std; void func1(int & i) { cout << "int & " << i << endl; } void func

    0

    2答えて

    マイクロソフトのVisual Studio 2015には、次のコード: foo Error: more than one instance of overloaded function "function" matches the argument list: function "foo(int8_t a)" function "foo(int16_t a)" a

    5

    2答えて

    私はシンプルなCプログラムを書いており、整数昇格が起こっているかどうかを知りたがっています。 整数昇格の仕組みと避け方を教えてください。 /* start of main */ unsigned short int res; unsigned short int bsp; signed short int analog; bsp = 2215; analog = 2213; if(

    10

    1答えて

    この質問Implicit type conversion rules in C++ operators(および他のいくつか)状態 は、私はMSVCの下で次の操作を実行した場合、他のint型unsigned long long型である。しかしながら、長い長い unsigned int型 に昇格されたいずれかの場合: : unsigned int a = <some expression>; uns

    -2

    1答えて

    ベクトルからスカラーを減算し、その結果をベクトルで返すテンプレート演算子関数を作成しようとしています。以下の機能は、私が思い付くことができたものです:ベクトルからスカラー(フロート)を引くしようとすると // vector - scalar template<typename T1, typename T2> auto operator - (const Vector<T1> & lhs, c

    6

    2答えて

    これは矛盾しているようです。私はshort、intおよびlong longの3種類の関数fがオーバーロードされています。 unsigned shortに合格した場合は、次に大きな署名付きタイプintに昇格します。しかし、あなたがunsigned intを渡した場合、それは私が期待するものである符号付きlong longに昇格しません。むしろコンパイラはオーバーロードされた関数へのあいまいな呼び出し

    -1

    1答えて

    私は、コンバージョンの種類と、さまざまなタイプのプロモーションと、これとすべてを比較していることを理解しようとしています。 union myUnion{ int intVal; float floatVal;}; if (m.floatVal == m.intVal) { cout << "BINGO!"; } if (*ptrInt == *ptrInt2) {

    1

    1答えて

    shortからの暗黙的な変換を防ぐために、intが16ビット型であると仮定します。 long test_1(short x, short y) { return x + y; } この例では数字を促進約Cのルールは何ですか? モジュロ演算から保護する方法は?