【问题标题】:Expected expression error in simple for loop C简单 for 循环 C 中的预期表达式错误
【发布时间】:2017-05-27 05:57:22
【问题描述】:

我在尝试将char(x) 分配给letter 的行中收到“预期表达式”错误。

我的代码如下:

#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;
}    

非常感谢任何帮助!

【问题讨论】:

  • 这不是你投射变量的方式。试试letter = (char)x;
  • 顺便说一句,你根本不需要演员表。 letter = x 也可以使用
  • 符号 char(x) 在 C++ 中有效,但在 C 中无效。在 C 中,您必须使用 (char)x 符号进行转换,尽管首先不需要转换 (@987654328 @ 可以正常工作)

标签: c parse-error


【解决方案1】:

如果你想进行类型转换,你必须这样做:

(char)x;

没有

char(x);

【讨论】:

  • 请注意,C++ 允许(尽管不再鼓励)char(x) 表示法作为替代转换。但是,C 不允许这样做是对的。
【解决方案2】:

您正在显式进行类型转换,但在执行此操作时您使用的是 C++ 表示法。

将该行更改为:

letter = (char)x;

【讨论】:

    【解决方案3】:

    避免不必要的强制转换,并且代码更简洁:

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

    根本不需要char letter,也不需要幻数

    【讨论】:

      【解决方案4】:

      如果将x 更改为char,则无需对x 进行类型转换。

      letter = x;
      

      另一个消除,你可以完全放弃字母并使用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-06
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 2014-10-21
        • 1970-01-01
        • 2016-02-14
        相关资源
        最近更新 更多