ID bài viết: 000073768 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 14/09/2011

Kết quả không chính xác từ hoạt động logic hoặc có điều kiện với tác dụng phụ

Môi Trường

  • Phiên bản đăng ký Intel®Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Sự cố quan trọng

    Mô tả

    Trình biên dịch C2H luôn đánh giá cả hai phần của logic (&&, ||) và có điều kiện (?:) Vận hành. Điều này khác với tiêu chuẩn quốc gia Hoa Kỳ mong đợi Hành vi Của Viện (ANSI) C, trong đó các thuật toán giao tiếp được đánh giá từ trái sang phải, và các nhà hoạt động nghệ thuật không cần thiết sẽ bị bỏ qua.

    Ví dụ, trong biểu thức (i-- && j--), nếu giá trị là i không, ANSI C không đánh giá biểu thức phía bên phải (RHS) và không j giảm. Ngược lại, Trình biên dịch C2H đánh giá cả hai bên, giảm giá j.

    Các biểu thức sau đây là các ví dụ khác có thể là bị ảnh hưởng bởi vấn đề này:

    if (i-- || j ) ...; a = ((cond == 1)? i : j );
    Độ phân giải

    Sử dụng các hoạt động logic và có điều kiện mà các toán tử có không có tác dụng phụ. Các hoạt động với các tác dụng phụ bao gồm trước và sau các phép toán gia tăng và giảm dần ( , --), hoạt động bộ nhớ (*, [], ., ->), và các cuộc gọi chức năng.

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 1 sản phẩm

    Thiết bị có thể lập trình Intel®

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.