Thắc mắc về hàm và gọi hàm

mình đang ôn thi cuối học phần và trong tài liệu ôn thi mượn được từ thằng bạn thì có một câu như này nhờ mọi người cùng nhau thảo luận giúp mình nhé!

Lúc đầu mình nghĩ là sẽ in ra 2 dòng “isDigit() called”
Nhưng khi viết chương trình chạy thì chỉ hiện 1 dòng thôi.
Khi thay and trong if ở main thành or thì lại in ra 2 dòng.
Mình đã thử với rất nhiều trường hợp khác nhau nhưng vẫn không thể hiểu nổi!
Mong nhận đc sự góp ý tận tình từ mọi người!
Thân.

1 Like

isDigit('B') có kết quả là FALSE nên cả biểu thức AND chắc chắn trả về FALSE
Trường hợp này các biểu thức phía sau sẽ được bỏ qua để tối ưu chi phí.

Tương tự với toán tử OR, nếu có 1 toán hạng là TRUE thì cả biểu thức chắc chắn là TRUE, các toán hạng phía sau sẽ được lược bỏ.

5 Likes

Trong C,C++, java thì toán tử && nếu false thì bỏ qua cái sau luôn. Nên chỉ có 1 cái isDigit thôi

3 Likes

OK! giờ thì mình đã hiểu! Cảm ơn mọi người! :clock430:

1 Like

FPT University ^^.
Có lấy key không em ơi :v:

2 Likes

Thi xong rồi anh :v: @Is2IT

2 Likes

@lanhhuyet510 Eo chưa kịp vào thể hiện tài năng thì @lanhhuyet510 đã hiểu rồi
@dangh Thanks bro :smile:

1 Like

@ltd isDigit('1') thì gọi là gì cho đúng nhỉ? toán hạng, toán tử, biểu thức?

@dangh isDigit('1') là hàm

Prototype của nó như thế này

int isdigit ( int c );

@ltd Ý là trong biểu thức isDigit('B') && isDigit('1') kìa :sweat:

Nếu vậy thì coi nó là toán hạng. Vì nó tham gia vào phép so sánh &&

bài này cũng hay vừa bíêt cách gọi hàm vừa phân biệt & và && mà có ai thử code trên java giống mình k ta :smile: tùm lum lỗi lun :joy:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?