2017-05-27 2 views
0

Je reçois une erreur "expression attendue" sur la ligne où j'essaie d'affecter char(x) à letter.Erreur d'expression attendue dans la boucle simple C

Mon code est le suivant:

#include <stdio.h> 

int main(void) { 
    printf("Hello, World!\n"); 
    char letter; 
    for(int x=97; x<=122; x++){ 
     letter = char(x); //error occurs on this line 
     printf("%c\n", letter); 
    } 
    return 0; 
}  

Toute aide est grandement appréciée!

+3

Ce n'est pas comme ça que vous créez des variables. Essayez 'letter = (char) x;' –

+1

BTW, vous n'avez pas besoin du casting du tout. 'letter = x' fonctionnera aussi –

+3

La notation' char (x) 'est valide en C++, mais pas en C. En C, vous devez utiliser la notation' (char) x' pour lancer, bien qu'il n'y ait pas besoin de cast en premier lieu ('letter = x;' fonctionnerait bien) –

Répondre

4

Si vous essayez de typer, vous devez faire:

(char)x; 

Non

char(x); 
+1

Notez que C++ permet (bien que n'encourage plus) la notation 'char (x)' comme un cast alternatif. Cependant, vous avez raison de dire que C ne le permet pas. –

3

Vous typecasting explicitement, mais en faisant cela, vous utilisez la notation C++.

Modifier cette ligne sur ceci:

letter = (char)x; 
1

Si vous changez x en char, vous n'avez pas besoin de typer x.

letter = x; 

Une autre élimination, vous pouvez déposer la lettre tout à fait et utiliser:

printf("%c\n", x); 
1

Il suffit d'éviter la coulée inutile, et aussi d'avoir un code plus propre:

for(int x='a'; x<='z'; x++){ 
    printf("%c\n", x); 
} 

Pas besoin de char letter à tout, pas besoin de nombres magiques.