Dalam alam C , parameter templat berfungsi sebagai pemegang tempat untuk jenis data atau nilai apabila mentakrifkan kelas atau fungsi generik. Semasa menggunakan integer sebagai parameter templat adalah lazim, percubaan untuk menggunakan nilai apungan sering mengakibatkan ralat pengkompil.
Piawaian C 11 secara jelas melarang terapung -titik nombor sebagai templat bukan jenis hujah:
Argumen templat untuk parameter templat bukan jenis dan bukan templat tidak boleh menjadi nilai titik terapung.
Ini sekatan berpunca daripada fakta bahawa pengiraan titik terapung tidak tepat, yang membawa kepada kemungkinan ralat atau tingkah laku yang tidak dijangka apabila membandingkan nilai titik terapung. Sebagai contoh, kod berikut mungkin tidak berfungsi seperti yang dimaksudkan kerana perwakilan titik terapung yang tidak tepat:
<br>func<1/3.f>(); // Fungsi panggilan 1<br>func<2/6.f>(); // Fungsi panggilan 2<br>
Walaupun sekatan standard, terdapat cara alternatif untuk mewakili nilai titik terapung sebagai hujah templat menggunakan ungkapan malar C 11 (constexpr):
Dengan menerima penyelesaian ini, anda boleh mencapai kefungsian yang serupa tanpa melanggar batasan standard. Walau bagaimanapun, adalah penting untuk mempertimbangkan pertukaran dan memastikan keperluan ketepatan permohonan anda dipenuhi.
Atas ialah kandungan terperinci Mengapa Terapung Tidak Boleh Digunakan sebagai Parameter Templat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!