assert
é uma macro ou função utilizada para verificar condições que devem ser verdadeiras em tempo de execução. Se a condição falhar, o programa geralmente é encerrado, e uma mensagem de erro é exibida. É uma ferramenta útil para depuração, garantindo que certas condições sejam atendidas durante o desenvolvimento.
assert
em C++ e CEm C++ e C, assert
é uma macro definida no cabeçalho <cassert>
(C++) ou <assert.h>
(C). Ela é usada principalmente para validar suposições em tempo de execução e pode ser desativada em código de produção definindo a macro NDEBUG
.
assert
deve ser usado principalmente para depuração. Em código de produção, é comum desativá-lo para melhorar o desempenho.
#include <iostream>
#include <cassert>
int divide(int a, int b) {
assert(b != 0 && "Divisor não pode ser zero!");
return a / b;
}
int main() {
int x = 10;
int y = 0;
std::cout << "Divisão: " << divide(x, y) << std::endl;
return 0;
}
Neste exemplo, assert(b != 0)
garante que o divisor nunca seja zero. Se y
for zero, a execução será interrompida com uma mensagem de erro.
#include <stdio.h>
#include <assert.h>
int divide(int a, int b) {
assert(b != 0 && "Divisor não pode ser zero!");
return a / b;
}
int main() {
int x = 10;
int y = 0;
printf("Divisão: %d\n", divide(x, y));
return 0;
}
O funcionamento é o mesmo do exemplo em C++, pois assert
em C é também usado para verificar a validade das condições em tempo de execução.
assert
em PythonEm Python, assert
é uma declaração nativa da linguagem que funciona de forma semelhante. Se a condição for falsa, uma exceção AssertionError
é lançada. Assim como em C/C++, os asserts
podem ser desativados no ambiente de produção utilizando a flag -O
(optimize, python -O script.py
) ao executar o script.
def divide(a, b):
assert b != 0, "Divisor não pode ser zero!"
return a / b
x = 10
y = 0
print("Divisão:", divide(x, y))
Nesse exemplo: assert b != 0
verifica se b
é diferente de zero. Se y
for zero, um AssertionError
será levantado com a mensagem “Divisor não pode ser zero!”, se você não usar assert
ou se usar o parâmetro: -O
como mencionado, a saída de erro será diferente.
Existem muitas implementações de assert
principalmente em softwares que fazem testes unitários, é uma ferramenta poderosa para evitar falhas!
cpp cppdaily linguagemc python