Tìm max trong 3 số nhập từ bàn phím (không dùng if else)

trước giờ em chỉ biết dùng if else để tìm giá trị lớn nhất trong ba số. ace cho em hỏi cách dùng biểu thức điều kiện để tìm max trong ba số nhập từ bàn phím như thế nào ạ hay ac lấy cho em vài ví dụ về chương trình sử dụng biểu thứ điều kiện được không ạ. thanks!

dùng ternary operator xem.

#define max2(a,b) ((a)>(b)?(a):(b))
printf("%d\n", max2(max2(a,b),c));

Có thể dùng while như là if cũng dc.

int max2(int a,int b){
    while(a>b) return a;
    return b;
}
3 Likes

thanks anh rất nhiều ạ!

1 Like

Mình không rành C lắm, thế này không biết có ổn không:

#include <stdio.h>
int max(int x, int y) {
   (void)((x < y) && (x = y));
   return x;
}

int main(void) {
    printf("%d\n", max(max(1, 2), 3));
}
6 Likes

Code thế này mà bảo không rành à @cuonglm :smile:

Nhưng mà phiên bản macro tốt hơn vì nó inline

Tại sao inline thì tốt hơn vậy Đạt?

Theo mình biết thì macro trong C không có type checking và có thể xảy ra side effect. Ví dụ:

max2(a++, b++)

PS: Mình không rành C thật, phần lớn là đọc hiểu, còn công việc hằng ngày thì không đụng đến C, chủ yếu thời gian rảnh thì tự “nghịch” :sunglasses:

2 Likes

inline tốc độ thực thi nhanh hơn

C là một ngôn ngữ được xây dựng dựa trên tinh thần Trust the programmer. Thế nên sử dụng C phải cẩn thận.

Cũng giống như câu lệnh này vậy

tmp=""
rm -rf /$tmp
2 Likes

Anh ơi, anh giải thích cho e đoạn code trên với. E chưa hiểu lắm

Chú ý rằng == mới là dấu bằng, còn = vẫn là (toán tử) gán. Khi code nên cẩn thận chỗ này.

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