Trong 3.0.4 Linux kernel, mm/filemap.c có dòng mã này:sử dụng Bizarre của nhà điều hành có điều kiện trong Linux
retval = retval ?: desc.error;
tôi đã cố gắng biên soạn một trường hợp thử nghiệm tối thiểu tương tự với gcc -Wall và không nhận được bất kỳ cảnh báo nào; hành vi có vẻ giống hệt với:
retval = retval ? retval : desc.error;
Nhìn vào chuẩn C99, tôi không thể tìm ra chính xác những gì mô tả hành vi này. Tại sao điều này OK?
Hãy xem http://stackoverflow.com/questions/2806255/why-would-you-use-the-ternary-operator-without-assigning-a-value-for-the-true – vhallac
Cảm ơn, vhallac . Theo như tôi có thể nói, sử dụng phần mở rộng GCC này là một phím tắt nhỏ mà hoàn toàn phá hủy tính di động. –
Chính xác những gì tôi đã nói với một đồng nghiệp đã cố gắng sử dụng nó trên một trong các dự án của chúng tôi. :) – vhallac