Re[3]: Java Plus
От: ДимДимыч Украина http://klug.org.ua
Дата: 28.10.11 15:15
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Есть одно интересное различие. Если 42 и +42 — одно и то же, то '+' и +'+' — нет (попробуй std::cout << '+' << +'+').


Так это уже не C, а C++
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[4]: Java Plus
От: damiryaka  
Дата: 30.10.11 09:06
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

RO>>Есть одно интересное различие. Если 42 и +42 — одно и то же, то '+' и +'+' — нет (попробуй std::cout << '+' << +'+').


ДД>Так это уже не C, а C++


И слава богу, что не Си. я боюсь подумать как поведёт себя программа на Си после выполнения любого из вызовов:

printf("%c %c", '+', +'+');
printf("%d %d", '+', +'+');
Re[2]: Java Plus
От: Yarik_L  
Дата: 30.10.11 10:10
Оценка:
Здравствуйте, __kot2, Вы писали:

__>а что ожидалось-то?

__>int i = 1 + 1 — 1 + 1 — 1

а вы попробуйте то же самое на питоне

i = int() + int() - int() + int() - 1
Re[5]: Java Plus
От: Кодт Россия  
Дата: 31.10.11 19:39
Оценка:
Здравствуйте, damiryaka, Вы писали:

D>И слава богу, что не Си. я боюсь подумать как поведёт себя программа на Си после выполнения любого из вызовов:


D>printf("%c %c", '+', +'+');

D>printf("%d %d", '+', +'+');

Она поведёт себя предсказуемо.
+'+' продвигает char до int.
Передача произвольного аргумента (...) тоже продвигает char до int.
Чтение char со стека с помощью va_arg тоже знает об этом — читает int, обрезает до char.
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.