Форум программистов, компьютерный форум CyberForum.ru

assert.h - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема с выходом из цикла http://www.cyberforum.ru/cpp-beginners/thread440445.html
#include <iostream> using namespace std; int main() { int element, new_element; //имеется массив, в который я вначале ввожу элементы(простые числа) char massiv; for(int i = 0; i < 3; i++) { cin >> element;
C++ Работа с файлами #include <iostream> #include <fstream> #include <stdio.h> #include <string.h> using namespace std; struct man // cруктура мужчин { char cename; //фамилия int number; // номер мужчины http://www.cyberforum.ru/cpp-beginners/thread440433.html
Найти 2 минимальных елемента и наибольший делитель C++
Ребята помогите пожалуйста, я понимаю что наверняка где то туплю но все же дан массив . найти два минимальных элемента и их наибольший делитель. Заранее спасибо язык с++ #include <iostream> #include <conio.h> using namespace std; int main() { int n,i=0,a,d,min,mind; cout<<"vvedite razmer masiva"<<endl;// ввожу размер
Как определить, что в COM-порт пришли данные? C++
Как определить, что в COM-порт пришли данные?
C++ Unnable to open... http://www.cyberforum.ru/cpp-beginners/thread440409.html
Доброго времени суток! Поставил на WS 7 C++ 3.1 (Запускаю через DOSBox). Не находит библиотеки и наборы функций (Unnable to open include file "stdio.h"). В "Directories..." настроено все правильно. Думаю, может из-за DOSBox`a не находит директории...?
C++ Площадь пересечения трехугольников Всем привет! Нужно решить вот эту задачку: Даны координаты вершин двух трехугольников. Эти трехугольники гарантированно пересекаются. Нужно написать программу, которая будет находить площадь пересечения этих трехугольников. Заранее спасибо за помощь! подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16827 / 5248 / 321
Регистрация: 30.03.2009
Сообщений: 14,132
Записей в блоге: 26
04.02.2012, 15:09     assert.h
Весь этот изврат сделан только для того, чтобы в печати засветить строку "Value not good". Чтобы не лазить в исходники программы и не смотреть, что за код был написан в файле таком-то, строке такой-то.

Технически это выражается в то, что строковой литерал как бы является указателем (непустым), а над указателем допустима операция !. Таким образом логическое выражение !"abc" всегда равно true и потому на результат вычисления выражения в assert'е не влияет, но компилятор при построении кода его удаляет как мёртвый код (по правилу "x | 1 == x"). Т.е. с одной стороны в коде не остаётся никаких дополнительных проверок, с другой стороны в печати засвечивается требуемая строка (потому что всё выражение, стоящее внутри assert'а, попадает в печать)

Добавлено через 2 минуты
Подразумевается, что вместо ничего не значащей фразы "Value not good" в коде написано что-то более осмысленное, помогающее понять смысл данного assert'а.
 
Текущее время: 02:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru