30/09/2018, 16:16

Poll: Kiểm tra kiến thức C - 4.02

Các bạn thảo luận đáp án nhé, bài test lấy từ http://www.indiabix.com/online-test/c-programming-test/14
2. What will be the output of the program?

#include<stdio.h>
int main()
{
    int i=-3, j=2, k=0, m;
    m = ++i && ++j || ++k;
    printf("%d, %d, %d, %d
", i, j, k, m);
    return 0;
}
  • A. 1, 2, 0, 1
  • B. -3, 2, 0, 1
  • C. -2, 3, 0, 1
  • D. 2, 3, 1, 1
Đỗ Trung Quân viết 18:20 ngày 30/09/2018

Anh @ltd chọn B à :trollface:

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

Chưa chọn, nãy giờ loay hoay chưa mở cái codeblocks lên. Phải bỏ vào codeblocks chạy thử rồi mới chọn :trollface:

Đỗ Trung Quân viết 18:19 ngày 30/09/2018

Không biết ai chọn B mà dìm hàng nhỉ :trollface: :trollface: :trollface: :trollface: :trollface:

X viết 18:18 ngày 30/09/2018

gian lận thi cử =)))

Thực tế khắc nghiệt viết 18:21 ngày 30/09/2018

tính được i, j, nhưng ko tính được m bằng mấy

  m = ++i && ++j || ++k;
TTmagic viết 18:30 ngày 30/09/2018

em đấy :3 sao lại sai nhỉ :3

Lê Đình Huy viết 18:23 ngày 30/09/2018

TÍnh mãi ko ra đáp án

Nguyễn Minh Dũng viết 18:20 ngày 30/09/2018

Câu này hay đấy,

C. -2,3,0,1

Lý do là như sau:

  • ++i => i = -2
  • && điều kiện và, vì -2 khác 0, là đúng, nên ta cần kiểm tra tiếp điều kiện còn lại
  • ++j => j = 3, 3 cũng khác 0, là đúng
  • || là điều kiện hoặc, vì vế bên trái đã đúng nên ta không cần kiểm tra nữa. Dẫn đến
  • ++k sẽ không được thực thi, k giữ nguyên giá trị 0
  • m sẽ nhận được được kết quả của phép tính logic && và ||. Kết quả là đúng thì sẽ trả về 1
Bài liên quan
0