質問は下のソースコードにコメントに記述させていただきました。しかし、読みづらいのでここにも改めて記述いたします。
// この行のように、変数宣言の際の-は「単項算術演算子」ですか?それとも、別物ですか?
/* また、xとbの内部ビットは同じですか?(両方とも
11111111111111111111111111111101
ですか?)*/
/* xとbの内部ビットが同じ場合、コンピュータは
int b=-3;
という記述から、どういう順序でbの内部ビットを決めているのでしょうか?
// このことは今回の質問と直接関係ないのですが、上のxはunsigned int型なのに-3という負の値をもってます。このことに違和感を感じています。
該当のソースコード
c言語
1// 前提 私の処理系では「符号つき整数の内部表現は2の補数表現を使っている」とします。またsizeof(int)..4とします 2 3# include <stdio.h> 4 5int main(void) 6{ 7 unsigned int a=3; 8 unsigned int x; 9 x=-a; 10 // この行の-はaをオペランドにもつ「単項算術演算子」ですよね 11 12 /* 2の補数表現よりxの内部ビットは 13 11111111111111111111111111111101 14 である*/ 15 16 int b=-3; 17 // この行のように、変数宣言の際の-は「単項算術演算子」ですか?それとも、別物ですか? 18 19 /* また、xとbの内部ビットは同じですか?(両方とも 20 11111111111111111111111111111101 21 ですか?)*/ 22 23 /* xとbの内部ビットが同じ場合、コンピュータは 24 int b=-3; 25 という記述から、どういう順序でbの内部ビットを決めているのでしょうか? 26 私は、 27 no1 3という記述を、符号なし整数3と認識して、 28 00000000000000000000000000000011 29 というビット列を考える 30 no2 -を単項算術演算子(最初にかいた質問の記述の 31 ように別物かもしれませんが、同じく2の補数に変換する作用をして)と認識して、 32 11111111111111111111111111111101 33 というビット列をbの内部ビットとする 34 というように決めていると予想しました。*/ 35 36 37 // このことは今回の質問と直接関係ないのですが、上のxはunsigned int型なのに-3という負の値をもってます。このことに違和感を感じています。 38 39return 0; 40} 41
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
cygwinでgccコンパイラを使用しております
回答1件
あなたの回答
tips
プレビュー