Wyrażenie stałe – wyrażenie zapisane w kodzie źródłowym programu, którego wartość może zostać wyznaczona przez translator już na etapie kompilacji.

W kodzie źródłowym często umieszczane są konkretne wartości, znane na etapie kodowania. Wartości te mogą zostać zapisane za pomocą literałów reprezentujących w danym typie konkretną wartość. W większości implementacji możliwe jest również zapisanie takich wartości w postaci wyrażeń stałych.

Wyrażenia stałe w odróżnieniu od literałów nie stanowią zapisu wprost wartości, lecz jest to zapis wartości za pomocą literałów, w tym zdefiniowanych wcześniej stałych, symboli i makr preprocesora, operatorów oraz wybranych funkcji standardowych. Określona wartość, która ma zostać wpisana do kodu źródłowego, wymaga w tym przypadku wykonania obliczeń. W większości systemów programowania wyrażania takie są obliczane w trakcie przetwarzania kodu źródłowego przez translator, do kodu wynikowego wstawiana jest wyznaczona wartość wyrażenia stałego (a nie kod obliczeniowy zawarty w wyrażeniu).