Bagikan melalui


Compiler Warning (Level 3) C4738

menyimpan float 32-bit mengakibatkan memori, kemungkinan hilangnya performa

C4738 memperingatkan bahwa hasil tugas, transmisikan, argumen yang diteruskan, atau operasi lain mungkin perlu dibulatkan atau bahwa operasi kehabisan register dan perlu menggunakan memori (tumpahan). Ini dapat mengakibatkan kehilangan performa.

Untuk mengatasi peringatan ini dan menghindari pembulatan, kompilasi dengan /fp:fast atau gunakan double alih-alih float.

Untuk mengatasi peringatan ini dan menghindari kehabisan register, ubah urutan komputasi dan ubah penggunaan inlining Anda

Peringatan ini nonaktif secara default. Untuk informasi selengkapnya, lihat Peringatan Pengkompilasi yang Nonaktif secara Default.

Contoh

Sampel berikut menghasilkan C4738:

// C4738.cpp
// compile with: /c /fp:precise /O2 /W3
// processor: x86
#include <stdio.h>

#pragma warning(default : 4738)

float func(float f)
{
    return f;
}

int main()
{
    extern float f, f1, f2;
    double d = 0.0;

    f1 = func(d);
    f2 = (float) d;
    f = f1 + f2;   // C4738
    printf_s("%f\n", f);
}