forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Открытие Америки (http://forum.boolean.name/showthread.php?t=19271)

DarkInside 12.10.2016 01:02

Ответ: Открытие Америки
 
Цитата:

Сообщение от Randomize (Сообщение 309169)
Или так :)
Код:

t = (0 < x) ? 1 : 0;

До этого я еще не дошел :-)

Randomize 12.10.2016 06:39

Ответ: Открытие Америки
 
Цитата:

Сообщение от mingw (Сообщение 309170)
в левую часть писать переменную, в правую - константу.

Наоборот. По крайней мере в моей отрасли.

Nex 12.10.2016 09:14

Ответ: Открытие Америки
 
Цитата:

Сообщение от Randomize (Сообщение 309174)
Наоборот. По крайней мере в моей отрасли.

А можно пояснение почему так? Ибо не логично получается.

impersonalis 12.10.2016 14:55

Ответ: Открытие Америки
 
Цитата:

Сообщение от Nex (Сообщение 309176)
А можно пояснение почему так? Ибо не логично получается.

Так называемый Йода-стиль* позволяет в Си++ избежать тупой опечатки:
if(x=5) вместо if(x==5).
Если писать "пяти равно икс", то синтаксически корректна только конструкция 5==x, но не 5=x.

* я этим, вроде не страдаю, и потому пишу по-другому; просто поясняю.

Nex 21.10.2016 14:44

Ответ: Открытие Америки
 
Цитата:

Сообщение от impersonalis (Сообщение 309178)
Так называемый Йода-стиль* позволяет в Си++ избежать тупой опечатки:
if(x=5) вместо if(x==5).
Если писать "пяти равно икс", то синтаксически корректна только конструкция 5==x, но не 5=x.

* я этим, вроде не страдаю, и потому пишу по-другому; просто поясняю.

Получается IDE для C++ не настолько продвинутые что бы показать данную ошибку или такую возможность ( if(x=5) ) можно где то применить?

RegIon 21.10.2016 14:52

Ответ: Открытие Америки
 
Цитата:

Сообщение от Nex (Сообщение 309417)
Получается IDE для C++ не настолько продвинутые что бы показать данную ошибку или такую возможность ( if(x=5) ) можно где то применить?

Ну не прям такую можно применить. C++ вроде нету таких конструкций, да и мало вообще много где на этапе компиляции выкинет.
Но везде есть что-то типо того:
PHP код:

if(!(getline())) 

И

PHP код:

if(!(== getline())) 

VS2015 на С++ вообще плевать, там много что не подсвечивается. Или после C# так кажется

ABTOMAT 21.10.2016 15:04

Ответ: Открытие Америки
 
Цитата:

Сообщение от Nex (Сообщение 309417)
Получается IDE для C++ не настолько продвинутые что бы показать данную ошибку или такую возможность ( if(x=5) ) можно где то применить?

А это ошибка? Такая конструкция называется "Assignments in conditions".

А вообще показывают. Подчёркивают как warning.

Конкретно в примере if(x = 5) тип значения внутри скобок будет int вместо bool, и в C# это не даст запуститься проге (т.к. автоматически инт в бул не кастится).
В других си-подобных языках IDE, как правило, подчёркивают как warning, но ошибкой это не является.

impersonalis 21.10.2016 22:42

Ответ: Открытие Америки
 
Да-да: это не ошибка, а синтаксически корректная конструкция.
Типа таких:
Цитата:

Сообщение от DarkInside (Сообщение 309136)
Код:

x = 5
t = x > 0

Раньше я бы написал так:
Код:

x = 5
t = 0
if x > 0 then t = 1

А еще раньше написал бы так:

Обычно отмечается как warning - но разве кто их читает?

Вообще под X-ом может быть объект, для которого переопределён оператор присваивания, в этом случае всё очень даже логично (зависит от семантики)

ABTOMAT 24.10.2016 11:59

Ответ: Открытие Америки
 
Цитата:

Сообщение от impersonalis (Сообщение 309426)
Да-да: это не ошибка, а синтаксически корректная конструкция.
Типа таких:


Обычно отмечается как warning - но разве кто их читает?

Вообще под X-ом может быть объект, для которого переопределён оператор присваивания, в этом случае всё очень даже логично (зависит от семантики)

Кстати почему-то "в приличном обществе" считается присвоение в сравнении каким-то дурным тоном. По-моему, в разумных пределах вполне допустимо.

Knightmare 24.10.2016 12:08

Ответ: Открытие Америки
 
Цитата:

Сообщение от ABTOMAT (Сообщение 309457)
Кстати почему-то "в приличном обществе" считается присвоение в сравнении каким-то дурным тоном. По-моему, в разумных пределах вполне допустимо.

Код читается чаще чем пишется. Поэтому можно тупо проглядеть это если не вчитываться.

ABTOMAT 24.10.2016 14:54

Ответ: Открытие Америки
 
Предлагаю обсудить присвоение в условии в отдельной теме:
http://forum.boolean.name/showthread.php?t=20454


Часовой пояс GMT +4, время: 09:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot