【问题标题】:char comparison and handling variables字符比较和处理变量
【发布时间】:2021-08-16 23:14:57
【问题描述】:

所以我对一般编程非常陌生,对于基于 C 和 UNIX 的操作系统更是如此。

我正在尝试学习如何用 C 编写代码,并且正在开发 ubuntu 操作系统。我在网上找到了一些初学者级别的任务来开始。所以现在我正在努力完成这个任务:

完成函数code2abc的实现,使其返回 对应于类型参数代码中指定的 2 位代码的字符 字符。函数返回的字符应根据 代码如下位内容:

代码/返回值:00000001/'A' --- 00000010/'B' --- 00000011/'C'

预期输出:

  1. code2abc(1) = 'A'
  2. code2abc(2) = 'B'
  3. code2abc(3) = 'C'
  4. code2abc(0) = ' '
  5. cod2abc(还有什么) = ' '

首先,我并没有真正理解 2 位代码的含义以及如何使用它。我在网上查过,但没有找到任何帮助。其次,据我所知,指令暗示函数的输入是一个 char 值,这如何响应那里提到的二进制代码?到目前为止,我已经尝试过:

char code2abc(char code) {
    if ((code <'1' != 0) || (code >'3' != 0)) { // referring to ASCII values of the chars
        return ' ';
}
    return (code + 52); // 52 is the difference of ASCII values between A,B,C and 1,2,3  
}

我习惯于使用 java,所以我尝试使用我所知道的,但我觉得我很遥远。当我编译文件时,系统提醒我没有使用变量'code',当我运行它时它返回''(空格)。我正在使用 vim 编辑器,会不会是语法错误导致编译器无法识别变量?

真的很感激任何想法或提示!

【问题讨论】:

    标签: c ubuntu unix binary char


    【解决方案1】:

    您可以使用简单的 switch 语句轻松完成此操作,例如:

    char code2abc(const int code){
        switch(code){
            case 0b01: return 'A';
            case 0b10: return 'B';
            case 0b11: return 'C';
            default: return '';
        }
    }
    

    这里没有发生真正的转换,只是一个简单的 if-else 关系。我认为他们希望您做的是查看二进制并将其转换为十进制?如果是这样,上面的代码就相当于:

    char code2abc(const int code){
        switch(code){
            case 1: return 'A';
            case 2: return 'B';
            case 3: return 'C';
            default: return '';
        }
    }
    

    就两位代码的“意义”而言,没有。它只是分配给字母“A”、“B”和“C”的任意映射。你不会在任何约定中找到它。

    【讨论】:

    • 但是输入应该是 char 而不是 int。另外我忘了提到我正在使用 VIM 编辑器,你能想到编译器告诉我变量“代码”在我使用它时没有使用的原因吗?
    • 归根结底,char 只不过是一个 8 位整数。唯一赋予它任何意义的是编码(即 ASCII、UTF-8)。只需在程序中将int 替换为char 即可。
    • 应该提到二进制常量(例如 0b01)是 GCC 扩展,而不是 C 语言的标准部分。此外,` '' `(空字符常量)是一个错误。
    • 是的,尽管它适用于大多数现代编译器,包括 clang 和 MSVC。所以只要不是严格的 ISO C 就可以使用它。
    • 没问题,那就是 32。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    相关资源
    最近更新 更多