Saya menemukan idiom pemrograman ini baru-baru ini:
const float Zero = 0.0;
yang kemudian digunakan dalam perbandingan:
if (x > Zero) {..}
Adakah yang bisa menjelaskan apakah ini benar-benar lebih efisien atau dapat dibaca atau dipelihara daripada:
if (x > 0.0) {..}
CATATAN: Saya dapat memikirkan alasan lain untuk mendefinisikan konstanta ini, saya hanya ingin tahu tentang penggunaannya dalam konteks ini .
xmemiliki tipe float, maka x > 0.0paksakan promosi double, yang mungkin kurang efisien. Itu bukan alasan yang baik untuk menggunakan konstanta bernama, hanya untuk memastikan konstanta Anda memiliki tipe yang benar (misalnya 0f, float(0)atau decltype(x)(0)).
13.37tidak float, itu double. Jadi, jika Anda menginginkannya floatmaka mungkin saja tutor Anda benar. Dalam beberapa konteks (mis. Penugasan ke float) 13.37akan secara implisit dikonversi ke floatyang Anda inginkan, dan dalam konteks lain (mis. Pengurangan tipe templat) tidak akan, sedangkan yang static const floatselalu dimulai sebagai jenis yang Anda inginkan. Oleh karena itu, lebih aman. Pikiran Anda, jadi akan 13.37f! Namun, ada alasan lain untuk menghindari makro selain "keamanan jenis", jadi kemungkinan besar tutor memberi Anda argumen yang buruk.