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 .
x
memiliki tipe float
, maka x > 0.0
paksakan 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.37
tidak float
, itu double
. Jadi, jika Anda menginginkannya float
maka mungkin saja tutor Anda benar. Dalam beberapa konteks (mis. Penugasan ke float) 13.37
akan secara implisit dikonversi ke float
yang Anda inginkan, dan dalam konteks lain (mis. Pengurangan tipe templat) tidak akan, sedangkan yang static const float
selalu 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.