constexpr を試したところエラーが出ました


別の方が書いたものを写させていただきました。なので、他のところには問題はないと思います。私なりに調べてみたところ今の C++
のバージョンではバージョンでは使えないとのことでしたが、`constexpr`
を使う方法、あるいは今のバージョンで同じ役割があるものを教えていただければ幸いです。

なお、MacBook Air 上で VSCode を使用しています。

[code]

    int main(){
        //平均値を求めるプログラム
    
        //計算する元となる数値を NUMBERS_SIZE だけ用意
        static constexper int NUMBERS_SIZE = 10;
        int numbers[NUMBERS_SIZE] = { 1, 2, 3, 5, 5, 2, 10, 100, 50, 33};
    
        //人間が確認できるように numbers[] を画面に出力
        for (int i = 0; i < NUMBERS_SIZE; ++i) {
            printf("%d, ", numbers[i]);
        }
        printf("\b\b \n");
    
        // ここから平均値を求める計算
        // 平均値を格納するための変数 average を宣言
        double average = 0.0;
    
        // まずは数値達の合計を求める
        for (int i = 0; i < NUMBERS_SIZE; ++i) {
            average += numbers [i];
        }
    
        // 次に数値達の数で割る
        average /= NUMBERS_SIZE
    
        // 答えが求まったはずなので
        // 人間が確認できるように average を画面に出力
        printf("平均値は %d です\n", average);
        
        return 0;
    }
    
[/code]




幾つか間違いがあるようです。

  * `#include <stdio.h>`が先頭にない
  * `constexpr`を`constexper`と記述し、`e`が余分
  * `average /= NUMBERS_SIZE`行に行末の`;`がない
  * `printf("平均値は %d です\n", average);`は`%d`ではなく`%f`

以上を修正したコードが、下記になります

[code]

    #include <stdio.h>
    
    int main(){
        //平均値を求めるプログラム
    
        //計算する元となる数値を NUMBERS_SIZE だけ用意
        static constexpr int NUMBERS_SIZE = 10;
        int numbers[NUMBERS_SIZE] = { 1, 2, 3, 5, 5, 2, 10, 100, 50, 33};
    
        //人間が確認できるように numbers[] を画面に出力
        for (int i = 0; i < NUMBERS_SIZE; ++i) {
            printf("%d, ", numbers[i]);
        }
        printf("\b\b \n");
    
        // ここから平均値を求める計算
        // 平均値を格納するための変数 average を宣言
        double average = 0.0;
    
        // まずは数値達の合計を求める
        for (int i = 0; i < NUMBERS_SIZE; ++i) {
            average += numbers [i];
        }
    
        // 次に数値達の数で割る
        average /= NUMBERS_SIZE;
    
        // 答えが求まったはずなので
        // 人間が確認できるように average を画面に出力
        printf("平均値は %f です\n", average);
        
        return 0;
    }
    
[/code]

タグにxcodeと書かれているので、コンパイラはclang++を使っていると仮定してですが、`constexpr`が使えるのは`C++11`からなので、`clang++`へのコンパイルオプションに`-std=c++11`を指定することで`constexpr`が使えます。

今回僕は、Terminalから直接`clang++`でコンパイルしてみました。  
コマンドラインは以下のようになります。

[code]

    clang++ -std=c++11 constexpr.cpp
    
[/code]

実行結果は以下のようでした

[code]

    1, 2, 3, 5, 5, 2, 10, 100, 50, 33
    平均値は 21.100000 です
    
[/code]

