?

Log in

No account? Create an account
знаковый или беззнаковый? - По делам сюда приплыл, а не за этим — ЖЖ [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

знаковый или беззнаковый? [фев. 22, 2018|12:50 pm]
Anatoly Vorobey
[Tags|]

(эта запись может быть интересна программистам, знающим C/C++)

Во внутреннем форуме на работе кто-то устроил опрос, который просто не могу не украсть:

Опрос #2078582 unsigned short

"foo" is an "unsigned short". Is the expression "foo + foo" signed or unsigned?

signed
36(17.2%)
unsigned
126(60.3%)
implementation defined
47(22.5%)


Не смотрите в комментарии перед голосованием, там можно обсуждать правильный ответ.
СсылкаОтветить

Comments:
[User Picture]From: son_0f_morning
2018-02-22 01:53 pm

Re: Conversion rules

>> остались ли архитектуры, где sizeof(short) == sizeof(int)
Мне неизвестно (я вообще не знаток архитектур, тем более старых).

Меня тут другой вопрос заинтересовал.
Правила конверсии (да они делались под PDP) на первый взгляд "хорошо ложатся" на неявные преобразования к машинному слову. Есть ли исключения?

Т.е. если вы работали со всякими Al \ Bх -- то правила конверсии позволят вам просто произвести операцию над Ax Bx (*).
Так вот есть ли ситуации, в которых С-правила преобразования вызовут оверхэд, скажем в AI-32 коде

*) при условии очищенного старшего полу-слова, но это чисто технический работы с IR.

(Ответить) (Parent) (Thread)
[User Picture]From: avva
2018-02-22 01:56 pm

Re: Conversion rules

Думаю, что нет таких - правила такие, какие они есть, исходя из фундаментального предположения, что int будет машинным словом, и поэтому преобразование к нему "бесплатно" или дешево по причинам, которые вы указываете.
(Ответить) (Parent) (Thread)
[User Picture]From: levtsn
2018-02-22 02:12 pm

Avr если считать это живым.

(Ответить) (Parent) (Thread)
[User Picture]From: gul_kiev
2018-02-23 08:38 pm

RE: Re: Conversion rules

На 64-битных системах (обычно) 32-битный int.
Значит, int не равен слову?
(Ответить) (Parent) (Thread)