
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