LINUX.ORG.RU

Базовые типы

 ,


0

2

Пусть есть

int a;
double b;

Как лучше делать?

a = (int)b;
или
a = static_cast<int>(b);
?

Другой вопрос с методами\функциями:

void foo(const int & a);
void foo(const double & b);
или
void foo(int a);
void foo(double b);
?



Последнее исправление: hired777 (всего исправлений: 1)

Ответ на: комментарий от next_time

внезапно, getchar() не просто так возвращает int:

#include <stdio.h>

int main(void)
    {
    int c = getchar();

    printf("c = %d (%s)\n", c, c == EOF ? "EOF" : "NOT EOF");
    printf("(signed char)c = %d (%s)\n",
        (signed char)c, (signed char)c == EOF ? "EOF" : "NOT EOF");
    printf("(unsigned char)c = %d (%s)\n",
        (unsigned char)c, (unsigned char)c == EOF ? "EOF" : "NOT EOF");

    return 0;
    }
$ echo я | iconv -t cp1251 | ./a.out 
c = 255 (NOT EOF)
(signed char)c = -1 (EOF)
(unsigned char)c = 255 (NOT EOF)

$ ./a.out < /dev/null
c = -1 (EOF)
(signed char)c = -1 (EOF)
(unsigned char)c = 255 (NOT EOF)

так что, если char знаковый, получишь ложный EOF, если беззнаковый, не получишь EOF никогда.

Результат getchar() и getc() всегда нужно проверять на EOF как int.

cdslow ★★
()
Ответ на: комментарий от cdslow

внезапно, getchar() не просто так возвращает int:

Результат getchar() и getc() всегда нужно проверять на EOF как int.

внезапно,

 (signed char)c = getchar(); 

if(feof(stdin))
{
  printf("EOF\n");
}
else{
  printf("NOT EOF\n");
}

next_time ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.