Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa hành vi không xác định, không xác định và thực thi xác định trong C và C ++?

Hành vi không xác định chỉ đơn giản là hành vi không được xác định bởi đặc tả C ++. Ví dụ:nếu bạn có nhiều phép toán tăng / giảm một bậc trong một biểu thức như i ++ + ++ i, chúng dẫn đến hành vi không được xác định. Điều này chỉ đơn giản là do một số cấu trúc ngôn ngữ hợp lệ về mặt cú pháp nhưng bạn không thể dự đoán hành vi khi mã được chạy. Một ví dụ khác là biểu thức:u =(u ++);

Hành vi do triển khai xác định là hành vi không được chỉ định bởi đặc tả và để người triển khai quyết định và ghi lại cách lựa chọn được thực hiện. Trong trường hợp này, lựa chọn được đưa ra phải được đảm bảo, tức là chỉ điều đó mới xảy ra.

Trong trường hợp hành vi không xác định, tiêu chuẩn C ++ cung cấp nhiều đường dẫn có thể có mà không yêu cầu triển khai tài liệu hoặc đảm bảo bất kỳ điều gì.