Блог пользователя Coder_Shubham_24

Автор Coder_Shubham_24, история, 4 года назад, По-английски

I didn't get logic for these to lines

  1. f |= (ch == '-')
  2. x = (x << 1) + (x << 3) + (ch ^ 48);
template<class T>void read(T& x)
{
	x = 0; int f = 0; char ch = getchar();
	while (ch < '0' || ch>'9') { f |= (ch == '-'); ch = getchar(); }
	while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
	x = f ? -x : x;
	return;
}
  • Проголосовать: нравится
  • +28
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
  1. if (ch == '-') f = true;
  2. x = x * 10 + (ch - '0');
  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Thanks bro it helped me

    but why they are selecting only '-'(symbol) for 1st statement if(ch =='-')f=true; might be some seprator i guess