-6iこのコードの意味は何ですか?
#include<stdio.h>
int main()
{
int i = 1234;
printf("%d",-6i);
}
あなたの本当の質問に答えるに-6iは、複雑な定数(GCC拡張)です。http://gcc.gnu.org/onlinedocs/gcc/Complex.htmlから:
複雑なデータ型で定数を記述するには、接尾辞 'i' または 'j' (どちらでも同じです) を使用します。たとえば、
2.5fihas type_Complex floatと3ihas type_Complex intです。このような定数は常に純粋な虚数の値を持ちますが、実数の定数に 1 を加えることで任意の複素数を形成できます。これは GNU 拡張です。ISO C99 準拠の C ライブラリ (GNU libc など) があり、浮動小数点型の複雑な定数を作成したい場合は、代わり<complex.h>にマクロIorを含めて使用する必要があります_Complex_I。
したがって、iin-6iは変数 とは何の関係もありませんi。ちょうどfin の float 定数-1.0fが という名前の変数とは何の関係もありませんf。
フォーマット仕様は複雑な引数を処理しないため、補足として、printf("%d",-6i);未定義の動作です。%dGCC は、(私が知る限り) 複合型の表現について約束をしていません。それが何をするかについては、多くを語ることはできませんprintf()。
複雑な値を出力するには、複雑な値の各コンポーネントを個別に抽出する必要があると思います (glibcprintf()には、GCC の複雑な型を処理するフォーマット仕様拡張がないと思います)。何かのようなもの:
printf("%d %d\n",__real__ -6i, __imag__ -6i);
printf("%f %f\n",__real__ -6.i, __imag__ -6.i);
コードを少し変更すると、次のようになります。
int main(){
int i = 1234;
printf("%d",-6*i);
}
あなたは-7404戻ってくるかもしれません。
2 番目の質問に答えるには、この質問を確認してください。