내가 부호없는 INT 쓰기로 인쇄하는 기능을했다와 c를 숫자를 인쇄 :재귀 쓰기
ssize_t putc_fdr(char c, int fd)
{
return (write(fd, &c, sizeof(char)));
}
ssize_t putuint_fdr(uintmax_t i, int fd)
{
return (i != 0 ? putuint_fdr(i/10, fd) + putc_fdr(i % 10 + '0', fd) : 0);
}
하지만 기능은 아무것도 출력하지 않기 때문에 그것은 내가 = 0 작동하지 않습니다. ': 0'
을 ': putc_fdr('0', fd)'
으로 바꾸면 i> 10 인 경우 재귀가 끝날 때마다 추가 '0'이 항상 인쇄되기 때문에 작동하지 않습니다. (논리.) 하지만 시작 i가 0 인 경우에만이 0을 인쇄하는 방법은 무엇입니까?
'+'에 대한 피연산자 평가는 지정되지 않은 순서입니다. 귀하의 전화 번호는 역순으로 인쇄되기 때문에 올바르게 인쇄 될 것입니다. – StoryTeller
= 0 인 경우 0으로 반환합니다. 왜냐하면 그렇게하기 위해 코드를 작성했기 때문입니다. 더 명확하게 표현하면 (i! = 0? X : Y) 항상 Y를 반환합니다. – NomeQueEuLembro
[(++를 사용하는) 정의되지 않은 동작이 왜 발생합니까?] (http://stackoverflow.com/questions)/949433/why-are-these-constructs-undefined-behavior) – Olaf