質問編集履歴

3

ご指摘により、コードは抜粋から全文へと変更。

2021/08/27 13:10

投稿

masaya_math
masaya_math

スコア16

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,55 @@
2
2
 
3
3
  ```C
4
4
 
5
+ #include <stdlib.h>
6
+
7
+ #include <stdio.h>
8
+
9
+
10
+
11
+ int main(void)
12
+
13
+ {
14
+
15
+ double A[5] = {
16
+
17
+ [0] = 9.0,
18
+
19
+ [1] = 2.9,
20
+
21
+ [4] = 3.e+25,
22
+
23
+ [3] = .00007,
24
+
25
+ };
26
+
27
+
28
+
29
+ for (size_t i = 0; i < 5; ++i)
30
+
31
+ {
32
+
33
+ if (i)
34
+
35
+ {
36
+
5
- printf("element %zu is %g, \tits square is %g\n",
37
+ printf("element %zu is %g, \tits square is %g\n",
6
38
 
7
39
  i,
8
40
 
9
41
  A[i],
10
42
 
11
43
  A[i] * A[i]);
44
+
45
+ }
46
+
47
+ }
48
+
49
+
50
+
51
+ return EXIT_SUCCESS;
52
+
53
+ }
12
54
 
13
55
  ```
14
56
 
@@ -32,8 +74,6 @@
32
74
 
33
75
  環境はWindowsで、mingw-w64のgccを用いたvscodeのデバッガを用いている。コンパイラも実行もできるが、警告が出ている状態(おそらく-Wallフラグを立てているため)。
34
76
 
35
- コードはModern Cという書籍のもの。もちろんこの前後にかなり短い多少のコードはあるが、明らかにこの警告には関与がなさそうなのでprintfの部分のみ抜粋した。もし必要があれば更にコードは開示します。
36
-
37
77
  警告は他に2つほど出ていて、それぞれ
38
78
 
39
79
  unknown conversion type character 'z' in format [-Wformat=]

2

いくつかの項目を追記しました

2021/08/27 13:10

投稿

masaya_math
masaya_math

スコア16

test CHANGED
File without changes
test CHANGED
@@ -45,3 +45,5 @@
45
45
  iはsize_t、Aはdouble[]型で宣言されています。
46
46
 
47
47
  更に追記:WSLのgccで全く同じコードを同じgccのコマンドでコンパイルしてみたところ警告は何も出ませんでした。一方でwindowsのmingw-w64ではやはり3つの警告が出ました。
48
+
49
+ 更に追記:-std=99オプションを付与した場合も同様の警告文でした。また、gccのバージョンは8.1.0です。

1

linux環境での挙動の報告を追加

2021/08/27 13:04

投稿

masaya_math
masaya_math

スコア16

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  iまたはA[i]またはA[i]*A[i]のどれか一つを引数から削除すれば警告は現れなくなる。
32
32
 
33
- 環境はWindowsで、gccを用いたvscodeのデバッガを用いている。コンパイラも実行もできるが、警告が出ている状態(おそらく-Wallフラグを立てているため)。
33
+ 環境はWindowsで、mingw-w64のgccを用いたvscodeのデバッガを用いている。コンパイラも実行もできるが、警告が出ている状態(おそらく-Wallフラグを立てているため)。
34
34
 
35
35
  コードはModern Cという書籍のもの。もちろんこの前後にかなり短い多少のコードはあるが、明らかにこの警告には関与がなさそうなのでprintfの部分のみ抜粋した。もし必要があれば更にコードは開示します。
36
36
 
@@ -43,3 +43,5 @@
43
43
  となっています。
44
44
 
45
45
  iはsize_t、Aはdouble[]型で宣言されています。
46
+
47
+ 更に追記:WSLのgccで全く同じコードを同じgccのコマンドでコンパイルしてみたところ警告は何も出ませんでした。一方でwindowsのmingw-w64ではやはり3つの警告が出ました。