반응형
C에서의 & & 운영이란?
#include <stdio.h>
volatile int i;
int main()
{
int c;
for (i = 0; i < 3; i++)
{
c = i &&& i;
printf("%d\n", c);
}
return 0;
}
위 프로그램의 출력은 다음을 사용하여 컴파일되었습니다.gcc이
0
1
1
를 사용하여-Wall또는-Waddress선택,gcc는 다음 경고를 발행합니다.
warning: the address of ‘i’ will always evaluate as ‘true’ [-Waddress]
어떻게 있다.c위 프로그램에서 평가되고 있습니까?
그건…c = i && (&i);두 번째 부분은 용장성이기 때문에&i결코 평가하지 않는다false.
사용자 정의 유형의 경우, 실제로 단일 데이터를 오버로드할 수 있습니다.operator &그건 다를지 몰라도 여전히 아주 나쁜 생각이야.
경고를 켜면 다음과 같은 메시지가 나타납니다.
경고: 'i'의 주소는 항상 'true'로 평가됩니다.
거기에는 없다&&&C의 연산자 또는 토큰.근데...&&(논리적인 "and") 및&(단일 주소 또는 비트 단위 "and") 연산자가 존재합니다.
최대 뭉크의 법칙에 의해, 이것은 다음과 같습니다.
c = i &&& i;
다음과 같습니다.
c = i && & i;
굳어지다c둘 다일 경우 1로i그리고.&itrue, 둘 중 하나가 false일 경우 0이 됩니다.
int의 경우 0이 아닌 값은 모두 true입니다.포인터의 경우 null이 아닌 값은 모두 true입니다(또한 객체의 주소는 항상 null이 아닙니다).그래서:
굳어지다c1에 대해서i0이 아닌, 또는0한다면i0과 같습니다.
즉, 그 말은&&&단지 고의적인 난독화를 위해 사용되고 있습니다.할당은 다음 중 하나일 수 있습니다.
c = i && 1;
c = !!i;
c = (bool)i; // C++ or C with <stdbool.h>
c = i ? 1 : 0; /* C */
c = i ? true : false; // C++
언급URL : https://stackoverflow.com/questions/13946938/what-is-operation-in-c
반응형
'programing' 카테고리의 다른 글
| C기준은 true 값을 0 또는 1로 명시하고 있습니까? (0) | 2022.07.06 |
|---|---|
| 로봇 서비스 방법Vue 앱의 txt (0) | 2022.07.06 |
| 왜 C++ rand()는 같은 크기의 숫자만 생성하는 것 같습니까? (0) | 2022.07.05 |
| Java에서는 Arrays.equals와 동등합니다. (0) | 2022.07.05 |
| 역동적인 소품 통과 방법 (0) | 2022.07.05 |