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\n", 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
2 Likes

Anh @ltd chọn B à :trollface:

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:

1 Like

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

1 Like

gian lận thi cử =)))

1 Like

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

  m = ++i && ++j || ++k;

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

1 Like

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

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
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?