short *string = new short[1024]; // some string
if ( 'H' == *string ) { }
В ходе операции сравнения, short будет преобразовано в char или наоборот?
Вопрос тревожит потому, что если string содержит юникод (в какой-то кодировке двухбайтовой, например как просто числа, повторяющие таблицу UNICODE), то может получиться так, что преобразование какого-то двухбайтового символа в однобайтовый (есть сомнение, что компилятор будет генерить код, который будет заниматься таким бредом, т.к. этот бред кроме как отсечением старшего байта не сделать) может обеспечить выполнение условия, когда оно по логике ложно.
Склоняюсь к тому, что меньший размер будет преобразовываться к большему. Смущает порядок операндов оператора ==, где первым у меня стоит меньший.