Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (0 пользователей, 3 гостя)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

Странно, мне казалось что в с# есть имплисит конверсия инта в бул.

Не знаю даже, хорошо это или плохо.

Поделиться сообщением


Ссылка на сообщение
(изменено)

действительно, помнится "abc" ещё и отдаёт истину в некоторых языках

как и "1234" == 1234567 или что-то подобное

умно, не так ли? 3321860.gif

 

Странно, мне казалось что в с# есть имплисит конверсия инта в бул.

Не знаю даже, хорошо это или плохо.

более того, кастить инт в булев тоже нельзя, только Convert.ToBoolean() :nate:


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.

думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.

ну а такие кустарные изыски только подчеркивают, что жс еще та поделка


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.

думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.

ну а такие кустарные изыски только подчеркивают, что жс еще та поделка

это просто компилятор недостаточно умный GRviX.gif

 

я ещё после с++ 6.0 который немного учил в школе на доп занятиях по программированию с нашей информатичкой запомнил что если входная точка int main(), то она обязана сделать return 0 потому что обязана вернуть и вернуть именно инт

 

наверное кроме базового си-синтаксиса это было самое полезное что я там выучил

 

и никто не жаловался что компилятор тупой

Поделиться сообщением


Ссылка на сообщение

auto foo = [] {return 2; };
if (foo()){

}

не знаю ваших проблем

Поделиться сообщением


Ссылка на сообщение

auto foo = [] {return 2; };
if (foo()){

}

не знаю ваших проблем

нашел чем хвастаться


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

а чем оно от var/dynamic отличается?

 

я заменил возвращаемый тип на dynamic но вполне ожидаемо поймал ошибку о невозможности приведения int в bool, только в райнтайме уже

Поделиться сообщением


Ссылка на сообщение

а чем оно от var/dynamic отличается?

 

я заменил возвращаемый тип на dynamic но вполне ожидаемо поймал ошибку о невозможности приведения int в bool, только в райнтайме уже

Тем что я с таким же успехом мог написать

std::function<int()> foo = [] {return 2; };

потому что оно именно к нему приводится.

В с++ проверки и определения типов производятся во время компиляции, за исключением RTTI и применения виртуального наследования. Поэтому - раз не ругнулось будет работать. Вопрос уже в том, так ли, как ты хотел. Но это уже относится к знания языка и внимательности при написании кода :) В этом вопросе c# попроще.

Поделиться сообщением


Ссылка на сообщение

Умный компилятор и сам сможет раскрыть без потерь в производительности

а умный компилятор это какой?

 

5nREd.png

обсуждали уже тернарные конструкции в шарпе


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

ну тогда это var, раз во время компиляции

 

что в нём особенного в таком случае?

 

обсуждали уже тернарные конструкции в шарпе

а это тут при чём если вопрос в if (int)

Поделиться сообщением


Ссылка на сообщение

А с чего ты взял, что в нем есть что-то особенное?

Поделиться сообщением


Ссылка на сообщение

ну ты пишешь "не знаю ваших проблем"

значит пытался противпоставить это кусок кода каким-то проблемам

 

там из заметного есть auto, анонимная функция, if (int)

что из этого и каким именно проблемам ты пытался противопоставить?

Поделиться сообщением


Ссылка на сообщение

проблема отсутствия исмплисит конверсия инта в бул. Хотя некоторое считают что наоборот, ее наличие и есть проблема. Я вообще ни в том, ни в том проблемы не вижу, т.к. это больше вопрос соотношения удобство/безопасность. А тут уже каждый выбирает сам.

Поделиться сообщением


Ссылка на сообщение

удобство/безопасность

неудобство в процессе написания кода и рядом не стоит по сравнению с неудобствами которые доставит дыра в безопсности :nate:

 

правда и про недобство написания кода это тоже вопрос спорный

Поделиться сообщением


Ссылка на сообщение

Тут дело привычки. Я уже привык так сравнивать, и всегда смотрю что конкретно сравниваю и с чем. Поэтому конкртено в этом месте шанс ошибиться такой же, как и в любом другом месте в коде

Поделиться сообщением


Ссылка на сообщение

обсуждали уже тернарные конструкции в шарпе

а это тут при чём если вопрос в if (int)

а что тут еще обсуждать можно, если неявная конверсия между целочисленными и булевым типами была осознанно запрещена разработчиками?

 

Странно, мне казалось что в с# есть имплисит конверсия инта в бул.

Не знаю даже, хорошо это или плохо.

нeт


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

обсуждали уже тернарные конструкции в шарпе

а это тут при чём если вопрос в if (int)

а что тут еще обсуждать можно, если неявная конверсия между целочисленными и булевым типами была осознанно запрещена разработчиками?

ты как будто не читаешь куда отвечались посты которые квотишь

тин писал про умный компилятор который просечёт фишку с if (int)

я запостил скрин

 

при чём тут вообще твои загоны по ?: которые никаким боком не относятся к тому что мы обсуждали?

Поделиться сообщением


Ссылка на сообщение

а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.

думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.

ну а такие кустарные изыски только подчеркивают, что жс еще та поделка

С чего бы это подделка? Вполне логично что в не строго типизированных языках каждый тип имеет свое булеаново значение. Поэтому его отрицание даст как раз булеан. А отрицание булеана тоже булеан.

Так что все логично и продумано. Можно даже сказать что язык сделан для людей, а не для компиляторов. Как это сделано в шарпе, где даже инт нельзя подставить в условие, лол.


Мобильное приложение для продоты https://play.google....id=ru.prodota.m

Поделиться сообщением


Ссылка на сообщение

Когда я это писал, то предполагал, что возможность этой конверсии существует. Оказалось нет.

В с++ существует много различных компиляторов, и каждый с разными возможностями по оптимизации. Даже существует такое достаточно условное определение "smart compiler", которым все пользуются. То есть предполагая что для этой конструкции может быть применена какая-либо оптимизация.

Поделиться сообщением


Ссылка на сообщение

язык сделан для людей, а не для компиляторов. Как это сделано в шарпе, где даже инт нельзя подставить в условие, лол.

чот с голос

 

язык для людей-гуманитариев чтоли? :lol:

 

или с каких пор крокодил плюс два делёное на истину равняется компьютерной мышке?

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...