2016-11-19 1 views
0

비트 연산의 결과를 저장하는 데 사용할 수있는 변수 유형이 있는지 궁금합니다. 여기에 내가 무엇을의 조각입니다 :C에서 비트 연산 결과를 저장할 수있는 변수 유형이 있습니까?

struct stat fileinfo; 

if((fileinfo.st_mode & S_IFMT) == S_IFREG){ return FTYPE_REG; } 
else if((fileinfo.st_mode & S_IFMT) == S_ISDIR){ return FTYPE_DIR} 

부분, fileinfo.st_mode & S_IFMT, 내 코드의 나머지 부분에서 꽤 많이 반복이 이상적으로 나는 변수에 저장하고 싶지만 내가 너무 확실하지 않다, 무엇을 그럴거야.

이것을 변수로 저장할 수 있습니까? 그렇다면 어떤 유형입니까?

+3

비트 연산의 결과 유형은 일반적인 연산 연산과 같습니다. –

+2

저장하는 것에 대해 걱정하지 마십시오. 최신 컴파일러가이를 캐싱합니다. – PSkocik

+0

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html을 참조하십시오.'mode_t st_mode' –

답변

2

물론 가능합니다. 유형은 S_IFMT 또는 fileinfo.st_mode과 같아야합니다. 그런 다음 sys/types.h을 포함 할 수

2

사용 :

spec에서 언급 한 바와 같이
mode_t my_mode = fileinfo.st_mode & S_IFMT; 

는 "mode_t은 정수형이어야한다."