質問編集履歴
6
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
つい数日前C言語を始めた初心者です。C言語の入門書を読みながら、0の「1の補数」を求め、bit単位でその1の数を確認することによってunsigned intないしunsignd long intのビット数を確認しようと試みました。
|
3
3
|
具体的なコードは後述しています。
|
4
|
+
|
4
5
|
追記:
|
5
6
|
タイトルには全ビット反転の想定外の挙動とありますが、そもそも認識に齟齬があり、「C言語において論理シフトと算術シフトが環境によって変化することに対する無知」、加えて「その他無理解」が原因でした。結果として全ビット反転(1の補数演算子)に関する問題ではなかったので、その旨をここに書いておきます。
|
6
7
|
似たような知識の欠落・思い込みを持つ初学者のためにはなるかもしれないので、タイトルは修正せずに残しておきます。
|
5
タイトルと内容のすれ違いに関する追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
つい数日前C言語を始めた初心者です。C言語の入門書を読みながら、0の「1の補数」を求め、bit単位でその1の数を確認することによってunsigned intないしunsignd long intのビット数を確認しようと試みました。
|
3
3
|
具体的なコードは後述しています。
|
4
|
+
追記:
|
5
|
+
タイトルには全ビット反転の想定外の挙動とありますが、そもそも認識に齟齬があり、「C言語において論理シフトと算術シフトが環境によって変化することに対する無知」、加えて「その他無理解」が原因でした。結果として全ビット反転(1の補数演算子)に関する問題ではなかったので、その旨をここに書いておきます。
|
6
|
+
似たような知識の欠落・思い込みを持つ初学者のためにはなるかもしれないので、タイトルは修正せずに残しておきます。
|
4
7
|
|
5
8
|
### 発生している問題・分からないこと
|
6
9
|
永遠に数字の1が出力され続けます。
|
4
検証内容の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
### 試したこと・調べたこと
|
35
35
|
- [x] teratailやGoogle等で検索した
|
36
|
-
- [
|
36
|
+
- [x] ソースコードを自分なりに変更した
|
37
37
|
- [ ] 知人に聞いた
|
38
38
|
- [ ] その他
|
39
39
|
|
@@ -41,6 +41,13 @@
|
|
41
41
|
公式ドキュメントによって(limits.hやsizeofでも)unsigned intは32bitだということが確認できましたが、上記の結果は明らかにその範囲を超えています。
|
42
42
|
公式ドキュメントの「1の補数演算子」のページも確認しましたが、原因はまだつかめていません。
|
43
43
|
|
44
|
+
追記:
|
45
|
+
コードの12行目の宣言を、
|
46
|
+
unsigned int inte = ~0;
|
47
|
+
から
|
48
|
+
unsigned int inte = ~0U;
|
49
|
+
にすることも試してみましたが、問題は解決しませんでした。
|
50
|
+
|
44
51
|
### 補足
|
45
52
|
VS2022のバージョンは17.9.5です。
|
46
53
|
できる限り調べてからここに投稿していますが、Pythonを独学で学んだ程度のプログラミング歴しか持っていないため、極めて初歩的なミスをしている可能性もあります。
|
3
文法の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
### 実現したいこと
|
2
|
-
つい数日前C言語を始めた初心者です。C言語の入門書を読みながら、0の補数を求め、bit単位でその1の数を確認することによってunsigned intないしunsignd long intのビット数を確認しようと試みました。
|
2
|
+
つい数日前C言語を始めた初心者です。C言語の入門書を読みながら、0の「1の補数」を求め、bit単位でその1の数を確認することによってunsigned intないしunsignd long intのビット数を確認しようと試みました。
|
3
3
|
具体的なコードは後述しています。
|
4
4
|
|
5
5
|
### 発生している問題・分からないこと
|
2
文法の修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VS2022におけるC++のint、long intの全ビット反転の(個人的
|
1
|
+
VS2022におけるC++のint、long intの全ビット反転の(個人的に)想定外の挙動について
|
test
CHANGED
File without changes
|
1
文章のわかりやすさの改善
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VS2022におけるC++のint、long intの全ビット反転について
|
1
|
+
VS2022におけるC++のint、long intの全ビット反転の(個人的な)想定外の挙動について
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
つい数日前C言語を始めた初心者です。C言語の入門書を読みながら、0の補数を求め、bit単位でその1の数を確認することによってunsigned intないしunsignd long intのビット数を確認しようと試みました。
|
3
|
-
具体的
|
3
|
+
具体的なコードは後述しています。
|
4
4
|
|
5
5
|
### 発生している問題・分からないこと
|
6
6
|
永遠に数字の1が出力され続けます。
|