Форум программистов, компьютерный форум 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
Эксперт CАвтор FAQ
17264 / 5518 / 342
Регистрация: 30.03.2009
Сообщений: 15,020
Записей в блоге: 26
04.02.2012, 15:09     assert.h
Весь этот изврат сделан только для того, чтобы в печати засветить строку "Value not good". Чтобы не лазить в исходники программы и не смотреть, что за код был написан в файле таком-то, строке такой-то.

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

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