30/09/2018, 16:27

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!

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

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;
}
duykma viết 18:28 ngày 30/09/2018

thanks anh rất nhiều ạ!

LE Manh Cuong viết 18:29 ngày 30/09/2018

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));
}
Nguyễn Minh Dũng viết 18:28 ngày 30/09/2018

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

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

LE Manh Cuong viết 18:42 ngày 30/09/2018

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”

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

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

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

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

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
com0t viết 18:42 ngày 30/09/2018

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

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

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.

Bài liên quan
0