What is the output when the sample code below is executed?

4 phương ánCó giải thích
Đề bài
#include<stdio.h>
int main()
{
    const int a=5;
    if(a>3)
        a++;
        break;
    else
        a--;
    printf("%d",a);
    return 0;
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "Compile time error". Phạm vi khối do ngoặc nhọn quyết định, không do thụt lề: nhánh if ở đây không có ngoặc nhọn nên chỉ ôm đúng một lệnh là lệnh tăng a, còn lệnh break phía sau đã nằm ngoài if dù được thụt vào ngang hàng. Vì vậy khi gặp từ khoá else, trình biên dịch không còn if nào để ghép nên báo lỗi ngay. Mã này còn hai lỗi nữa: break chỉ hợp lệ trong vòng lặp hoặc trong switch, mà đây không có cái nào; và a khai báo const nên cả lệnh tăng lẫn lệnh giảm đều là ghi vào đối tượng chỉ đọc. Giá trị "6" giả định lệnh tăng chạy được trên một hằng rồi chương trình in ra sau đó. Giá trị "4" ứng với nhánh giảm chạy, nhưng điều kiện a lớn hơn 3 với a bằng 5 vốn đã đúng. Giá trị "5" giả định không nhánh nào chạy, trong khi vấn đề thật là chương trình không dịch nổi.

Cùng phần 3

Xuất hiện trong 2 bộ đề