(Choose 1 answer) What is the output of this C code?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
#include <conio.h>
int main() {
    int n = 267, *pn = &n;
    char* pc = pn;
    *pc = 0;
    printf("n = %d", n);
    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: "n = 256". n bằng 267, viết ở hệ mười sáu là 0x010B, tức một byte chứa 0x0B là 11 và byte cao hơn chứa 0x01 ứng với 256. Con trỏ pc giữ cùng địa chỉ của n nhưng mang kiểu con trỏ ký tự, nên *pc = 0 chỉ ghi 0 vào đúng một byte, byte nằm ở địa chỉ thấp nhất; trên máy lưu byte nhỏ trước, byte đó chính là 0x0B, vì vậy n còn lại 0x0100 là 256. "n = 0" sai vì một phép gán qua con trỏ ký tự chỉ xoá một byte, các byte còn lại của int không bị chạm. "n = 267" sai vì phép ghi đã thực sự thay đổi bộ nhớ. "error" sai vì gán con trỏ int cho con trỏ ký tự chỉ khiến trình biên dịch cảnh báo kiểu không khớp, mã vẫn dịch và chạy ra kết quả.

Cùng phần 5

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