С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378

Почему нет ошибки?

19.03.2013, 20:04. Показов 809. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.

В MS VC++ случайно написал нечто подобное:

C++
1
2
3
4
//...
int a, b, c;
//...
a = b; + c;
и скомпилировал. Самое странное, что мне не выдалось никакого сообщения об ошибке! Как это выражение понимать и что в компе в это время происходит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2013, 20:04
Ответы с готовыми решениями:

Почему нет ошибки?
Метод IsEmpty() класса указываю константным. Но в нем я изменяю состояние класса. Почему нет ошибки, а только предупреждение? ...

почему выскакивают ошибки
Здравствуйте. Такая вот проблема: мой проект состоит из нескольких .срр файлов и одного .h файла. В .h файле находятся все глобальные...

Почему выдает ошибки?
In function 'int main()': 10:14: error: 'gets' was not declared in this scope 11:35: error: 'strlen' was not declared in this scope ...

10
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
19.03.2013, 20:07
C++
1
+ c
скорее всего вообще будет выкинуто из кода как бесполезный кусок



P.S. Хотите ошибку - напишите c+
1
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378
19.03.2013, 20:14  [ТС]
А если написать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//...
int func(int *k)
{
(*k)++;
return 100500;
}
 
int main()
{
int a = 0, b = 7;
a = 5; + func(&b);
cout << a << "; " << b;
//...
}
то после выполнения b станет равным восьми значит, код не выбросился
0
 Аватар для fjay69
90 / 90 / 17
Регистрация: 26.10.2012
Сообщений: 249
19.03.2013, 20:18
Компилятор принял + за унарную операцию. Есть унарный минус, который меняет знак числа. А есть унарный плюс, который ничего не делает
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
19.03.2013, 20:21
Цитата Сообщение от Asker Посмотреть сообщение
значит, код не выбросился
Вызов функции естественно не выбросился, а ненужный "плюс" выкинули и всё.
1
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378
19.03.2013, 20:25  [ТС]
А есть унарный плюс, который ничего не делает
Я понял. Вот только для чего он нужен?
Изображения
 
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
19.03.2013, 20:31
Цитата Сообщение от Asker Посмотреть сообщение
Вот только для чего он нужен?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
class A{    
};
    const A & operator+(A & v){
        std::cout<<"Plus"<<std::endl;
        return v;
    }
    const A & operator-(A & v){
        std::cout<<"Minus"<<std::endl;
        return v;
    }
int main(){
    A a;
    +a;-a;
}
1
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378
19.03.2013, 20:39  [ТС]
Я понял! можно перегружать унарный плюс для какого-нибудь класса и использовать его в своих целях (и писать, кстати, коротко:
C++
1
+a;
) хм, возьму на заметку

Все, разобрался
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
19.03.2013, 21:22
Цитата Сообщение от Asker Посмотреть сообщение
Я понял! можно перегружать унарный плюс для какого-нибудь класса и использовать его в своих целях
дело даже не в этом, если есть унарный минус, почему бы не существовать унарному плюсу?
0
19.03.2013, 21:29

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
почему бы не существовать унарному плюсу?
и унарному умножению:D
C++
1
*p

1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
22.03.2013, 14:28
На самом деле Kastaneda прав, по сути он нужен для симметричности операций. Ну и кроме того, он позволяет делать integral promotion:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <typeinfo>
 
int main()
{
    short s = 10;
    char c = 'c';
    
    std::cout << typeid(s).name() << std::endl;
    std::cout << typeid(c).name() << std::endl;
    std::cout << typeid(-s).name() << std::endl;
    std::cout << typeid(-c).name() << std::endl;
    std::cout << typeid(+s).name() << std::endl;
    std::cout << typeid(+c).name() << std::endl;
    
    return 0;
}
http://liveworkspace.org/code/1WntkO$0
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2013, 14:28
Помогаю со студенческими работами здесь

Переполение массива - нет ошибки
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; int str_len(char a) { int L=0; while(a); return L-1; }

Почему выдает эти ошибки?
error: invalid types ‘float ’ for array subscript error: size of array ‘arr’ has non-integral type ‘float’ #include &lt;iostream&gt; ...

Почему компилятор выдаёт ошибки?
Почему компилятор выдаёт ошибки? #include &lt;iostream.h&gt; #include &lt;conio.h&gt; Void main () { int a, b, c; std::cin &gt;&gt; a...

Ошибки вроде бы нет, но работает не правильно!
Христос Воскресе! Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; using namespace std;...

ошибки которых на самом деле нет
possible use of идентификатор before diffinotion(С++) у меня в компиляторе возникает такое предупреждение, хотя все переменные объявлены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru