質問編集履歴

6

書式の改善

2024/03/30 15:38

投稿

L-pos
L-pos

スコア1

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

タイトルと内容のすれ違いに関する追記

2024/03/30 15:37

投稿

L-pos
L-pos

スコア1

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

検証内容の追加

2024/03/30 12:47

投稿

L-pos
L-pos

スコア1

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

文法の修正

2024/03/30 12:40

投稿

L-pos
L-pos

スコア1

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

文法の修正

2024/03/30 12:40

投稿

L-pos
L-pos

スコア1

test CHANGED
@@ -1 +1 @@
1
- VS2022におけるC++のint、long intの全ビット反転の(個人的)想定外の挙動について
1
+ VS2022におけるC++のint、long intの全ビット反転の(個人的)想定外の挙動について
test CHANGED
File without changes

1

文章のわかりやすさの改善

2024/03/30 12:35

投稿

L-pos
L-pos

スコア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が出力され続けます。