30/09/2018, 16:10

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.

Dang H. viết 18:26 ngày 30/09/2018

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ỏ.

Gió viết 18:26 ngày 30/09/2018

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

Lãnh Huyết viết 18:22 ngày 30/09/2018

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

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

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

Lãnh Huyết viết 18:24 ngày 30/09/2018

Thi xong rồi anh @Is2IT

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

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

Dang H. viết 18:13 ngày 30/09/2018

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

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

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

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

int isdigit ( int c );
Dang H. viết 18:13 ngày 30/09/2018

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

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

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

Nguyễn Minh Trí viết 18:13 ngày 30/09/2018

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 tùm lum lỗi lun

Bài liên quan
0