DoC 조건문은 항상 [1 또는 0]을 반환하거나 [0 또는 '0 이외의 다른 값]을 반환합니다. 물어 이유는C 조건문은 항상 1 또는 0을 반환합니까?
의사 코드 -
foo는 (주소, shouldSend) :
레지스터 >> = 1 개
레지스터 < < = 1 // 첫 번째 위치
레지스터에 비트를 지우려면 | = shouldSend // 신호를 보낼지 여부를 알려주려면
누군가가 1보다 큰 true의 shouldSend 값을 전달하면 문제가 발생합니다 (단 0은 false이고 다른 모든 것은 true, 기술적으로 이것은 유효합니다). 나는 shouldSend의 진리 값을 레지스터와 직접 ORing하기 때문에 0xFF라고하지 않는 것이 좋습니다! 나는 이미 해결책을 가지고있다. 그래서 질문은 호기심을 불러 일으킨다. 궁금하지만 경우 :
foo는 (주소, shouldSend) :
레지스터 >> = 1 개
레지스터 < < = 1 // 첫 번째 위치에
레지스터 비트를 지우려면 | = (shouldSend> 0) // 보내야하는지 여부를 알리기 위해
가 문제를 해결합니까? 이제는 0xFF (또는 일반적으로 1보다 큰 값)의 문제가 C 조건에 의해 가려 졌다고 생각할 것입니다. 그러나 이는 IF C 조건문이 [0 또는 1]을 반환하도록 보장 된 경우에만 유지됩니다.
ps - 컴파일러에 따라 다르다는 것을 알고 있지만, ansi 표준은 이것에 대해 무엇을 말하고 있습니까?
should should be (shouldSend! = 0)? !! shouldSend는 악의 속임수입니다! –