До сих пор я полагал, что нету унарного оператора +
.
Но затем я наткнулся на следующий пример:
char ch;
short sh;
int i;
printf("%d %d %d",sizeof(ch),sizeof(sh),sizeof(i)); // output: 1 2 4
printf("%d %d %d",sizeof(+ch),sizeof(+sh),sizeof(i)); // output: 4 4 4
Означает ли это, что +
выполняет преобразование типов здесь?
Потому что он ведет себя так же, как и
printf("%d %d %d",sizeof((int)ch),sizeof((int)sh),sizeof(i)); // output: 4 4 4
Это заставляет меня думать, что +
выполняет преобразование типов.
Но потом я попробую на double
double f;
printf("%d %d",sizeof(+f),sizeof((int)f),sizeof(f)); // output: 8 4 8
Это заставляет меня переосмыслить об унарном операторе +
.
Итак, мой второй вопрос: имеет ли унарный оператор +
особый эффект в операторе sizeof
?