0

私は NCURSES のソースコードを読んでいて、関数で次のことを見つけました:

unsigned long attrs = (1UL - 1UL);   //Setting to zero

しかし、次の行は何をしますか:

attrs |= ((1UL) << ((14) + 8));
printf("%d \n", attrs);
attrs |= ((1UL) << ((11) + 8));
printf("%d \n", attrs);

結果を出力すると、答えが得られます出力:

4194304
4718592
4

5 に答える 5

6

この演算子 (C のビットごとの OR 演算子) は、ビット マスキングに役立ちます。

attrs |= ((1UL) << ((14) + 8));

または、同等に、次のように設定することもできます。

attrs = attrs | ((1UL) << ((14) + 8));

于 2013-07-23T14:07:32.603 に答える
5

..の省略表記です。

attrs = attrs | ((1UL) << ((14) + 8));
于 2013-07-23T14:06:02.597 に答える