(参考書:新版明解c++中級 457ページです) このコードは参考書のサンプルコードを書き写しました、コメント部の//ここです↓という部分の|演算子はどのような働きをしてるのかがわかりません。
&&|| なら知っているのですが,ビット演算の論理和についても知っているのですがこの場合はどのような動きをするのでしょうか?

        #include <iostream>

        using namespace std;

        //--- double型配列の全要素を#######.##形式で各行に1要素ずつ表示 ---//
        void put_ary(double ary[], int n)
        {
            // 設定する書式(右揃え+10進数+固定小数点記法)
                                             //ここです↓
            ios_base::fmtflags flags = ios_base::right | ios_base::dec | ios_base::fixed;

            // 現在の書式と最小幅を保存
            ios_base::fmtflags old_flags = cout.flags();    // 現在の書式
            streamsize old_size = cout.width();             // 現在の最小幅

            // 精度を設定するとともに現在の精度を保存
            streamsize old_prec = cout.precision(2);        // 精度は2桁

            for (int i = 0; i < n; i++) {
                cout.width(10);             // 最小幅を10に設定
                cout.flags(flags);          // 書式をflagsに設定
                cout << ary[i] << '\n';
            }

            cout.flags(old_flags);      // フラグを戻す
            cout.width(old_size);       // 最小幅を戻す
            cout.precision(old_prec);   // 精度を戻す
        }

        int main()
        {
            double a[] = {1234.235, 5568.6205, 78999.312};

            cout << 0.00001234567890 << "\n\n";     // 通常表示

            put_ary(a, sizeof(a) / sizeof(a[0]));
            cout << '\n';

            cout << 0.00001234567890 << '\n';       // 通常表示
        }