40 votes

Quelle est la valeur de EOF et '\0' en C

Je sais que EOF et '\0' sont des entiers de type, mais si oui ne devraient-ils pas avoir une valeur fixe ?

J'ai imprimé les deux et obtenu -1 pour EOF et 0 pour '\0'. Mais ces valeurs sont-elles fixées ?

J'ai aussi eu ce

int a=-1;

printf("%d",a==EOF); //printed 1

La valeur pour EOF et '\0' est-elle fixe ?

6voto

Leo Izen Points 1575

'\0' est toujours le caractère NULL, ou 0. L'EOF dépend du compilateur, mais est généralement -1, et est toujours une valeur qu'un unsigned char ne peut pas contenir. Ne comptez pas sur la valeur de l'EOF, car elle PEUT CHANGER. Toujours faire x == EOF pas x == -1. La valeur de '\0' est TOUJOURS 0. Tu peux compter là-dessus.

0voto

BlackBear Points 10069

Oui, ils le sont. '\0' a la même valeur de NULL qui est 0 (mais ils signifient des choses différentes), alors que EOF est habituellement -1.

printf("%d",a==EOF); //printed 1

Dans ce cas vous demandez : is a == EOF ? si c'est print 1 (ce qui est vrai), ce n'est pas print 0 (ce qui est faux).

-1voto

Kumar Alok Points 830

'\0' est toujours 0

L'EOF dépend du compilateur

le plus souvent its -1 (en gcc & g++ il est -1).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X