Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gambaran Umum
Perbandingan antara jenis lebar yang berbeda dalam kondisi perulangan dapat menyebabkan perulangan gagal dihentikan.
Rekomendasi
Gunakan jenis yang sesuai dalam kondisi perulangan.
Contoh
Dalam contoh ini, hasil perbandingan dapat mengakibatkan perulangan tak terbatas jika nilai untuk argumen: a lebih besar dari SHRT_MAX:
void InfiniteLoop(int a)
{
for (short i = 0; i < a; i++) // BUG: infinite loop
{
// ...
}
}
Untuk memperbaiki bug, kami mengubah tipe variabel i agar sesuai dengan lebar dari a.
void NotInfiniteLoop(int a)
{
for (int i = 0; i < a; i++)
{
// ...
}
}
Detail Tambahan
Kueri ini dapat ditemukan di repositori Microsoft GitHub CodeQL. Lihat halaman CodeQL dan Static Tools Logo Test untuk detail tentang bagaimana pengembang Driver Windows dapat mengunduh dan menjalankan CodeQL.