Другие языки программирования и технологии

Помогите, проблемма с операцией "или" \!\!

Я читаю книгу "Керниган и Ричи", решил делать пока все как написано, тут такая проблемма, операцию "или" он не понимает, пишет:
Нераспознанная лексима

вот сама программа

______________________________________________________

#include "stdafx.h"
#include <iostream>
#include <cstdio>

#define eof

int _tmain(int argc, _TCHAR* argv[])
{
int c, i, nwhite, nother;
int ndigit[10];

nwhite = nother = 0;
for (i = 0; i < 10; ++i);
ndigit = 0;

while ((c = getchar()) != eof)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if(c== ' ' \!\! c== '\n' \!\! C== '\t')
++nwhite;
else
++nother;

return 0;
}

______________________________________________

там где "else if(c== ' ' \!\! c== '\n' \!\! C== '\t')" там и проблемма
так. Откуда вы взяли чудо "\!\!"? Операция "Логическое ИЛИ" выглядит как "II"
http://do.rksi.ru/library/courses/demo/tema1_3.dbk - там внизу таблица (Рисунок 1.3.1. Таблица приоритетов С++), где перечислены все операторы, никаких слэш_воскл_знак не было и нету.

"где eof там требует какое то выражение" - естественно требует, .т. к. вообще непонятно, что это за штука. Если копировали текст из книжки, то не забывайте, что си-регистрозависимый язык.
В stdio.h есть

#define EOF (-1)

------------------------
P.S. посмотрел книжку тут: http://lanzog.narod.ru/liter/kernigan-c/kernigan-c.html и тут http://lib.ru/CTOTOR/kernigan.txt
Хрен знает, откуда автор этот \! взял, нет такого...
ДР
Дима Ровба
650
Лучший ответ
Вопрос: каким компилятором вы пользуетесь? (Книгу не читал)
eof - это указание на конец файла, getch - это чтение символа с клавиатуры, эта функция получает ASCII код нажатого на клавиатуре символа, тип - integer, так что сравнивать целые числа с "концом файла" - это вообще не понятно как. getch() никогда не получит значения eof. Если вам нужно выйти из цикла по нажатию определенной клавиши, то следует сравнить значение функции с ASCII кодом клавиши: 27 - ESC; 32 - SPACEBAR; 13 - ENTER; 08 - BACKSPACE. То есть написать while((c = getch()) != 27) //Выход из цикла после нажатия ESC.

там где "else if(c== ' ' \!\! c== '\n' \!\! C== '\t')" там и проблемма

у вас объявлена переменная c - lowercase, а в сравнении С=='\t' у вас появляется не объявленная ни разу переменная C - uppercase

Попробуйте книгу Самоучитель C++ Александра Крупника, возможно она покажется вам более понятной и удобной.